学习 Kubernetes 的第一步是拥有一个可用的集群。本文对比三种常见的搭建方式:Minikube(本地单节点)、kubeadm(生产级标准)、Kind(CI 友好),并分别给出实操步骤。无论你是初学者还是准备生产部署,都能找到合适的方案。最后重点演示 kubeadm 搭建一个多节点集群。

一、搭建方式对比
工具	适合场景	优点	缺点
Minikube	个人学习、本地开发	简单、一键启动、支持插件(Ingress、Dashboard)	单节点,不支持多节点特性
kubeadm	生产环境、学习集群内部机制	官方推荐,支持高可用,可自定义组件	需要手动安装网络插件、多节点需多台机器
Kind	CI 测试、本地模拟多节点	使用 Docker 容器模拟节点,启动极快,支持 K8s 版本选择	性能较低,不适合性能测试

选择建议:

初学者:Minikube 最友好。

想模拟生产环境:kubeadm 在虚拟机或云服务器上搭建。

CI/CD 集成或快速测试:Kind。

二、Minikube 安装与使用
2.1 安装 Minikube(以 Linux 为例)

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

2.2 启动集群

minikube start --driver=docker   # 或 virtualbox、kvm2 等

首次启动会自动下载镜像并创建虚拟机(或容器)。

2.3 验证

minikube status
kubectl get nodes

2.4 常用功能
开启 Dashboard:minikube dashboard

启用 Ingress:minikube addons enable ingress

停止集群:minikube stop

删除集群:minikube delete

三、Kind 安装与使用
3.1 安装 Kind

# Linux
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind

3.2 创建多节点集群
创建配置文件 kind-config.yaml:

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker

启动:

kind create cluster --config kind-config.yaml

3.3 验证

kubectl cluster-info --context kind-kind
kubectl get nodes

3.4 删除集群

kind delete cluster

四、kubeadm 生产级集群搭建
本节以 Ubuntu 22.04 为例,搭建一个 Master 节点 + 两个 Worker 节点的集群。

4.1 前置准备(所有节点)
确保各节点之间网络互通,并且可以访问外网(拉取镜像)。

安装 containerd(推荐)或 Docker。本文使用 containerd。

# 安装 containerd
sudo apt update
sudo apt install -y containerd

# 生成默认配置
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml

# 修改 cgroup 驱动为 systemd(K8s 推荐)
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml

sudo systemctl restart containerd

安装 kubeadm、kubelet、kubectl:

# 添加 K8s 官方 GPG 密钥和仓库
sudo apt install -y apt-transport-https ca-certificates curl
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list

sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl   # 防止自动升级
关闭 swap(kubelet 要求):

bash
sudo swapoff -a
# 永久关闭:注释 /etc/fstab 中的 swap 行

启用内核模块并调整 sysctl:

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

sudo sysctl --system

4.2 初始化 Master 节点
在 master 节点上:

sudo kubeadm init --pod-network-cidr=10.244.0.0/16   # 使用 Flannel 的默认 CIDR

初始化成功后,输出类似:

text
Your Kubernetes control-plane has been initialized successfully!

To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown (id−u):(id -u):(idu):(id -g) $HOME/.kube/config

You can now join any number of worker nodes by running the following on each as root:
kubeadm join 10.0.0.1:6443 --token xxxxx --discovery-token-ca-cert-hash sha256:xxxxx
执行上述命令配置 kubectl:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

4.3 安装网络插件(CNI)
集群尚未 ready,需要安装网络插件。以 Flannel 为例:

kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

等待 Pod 运行:

kubectl get pods -n kube-flannel -w

4.4 添加 Worker 节点
在 worker 节点上执行 master 初始化时输出的 kubeadm join 命令。

如果没有记下 token,可以在 master 上重新生成:

kubeadm token create --print-join-command

4.5 验证集群

kubectl get nodes

所有节点应处于 Ready 状态。

五、集群基础测试
部署一个 Nginx Pod 并暴露 Service:

kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get svc nginx

访问:curl http://<任意节点IP>:,应看到 Nginx 欢迎页。

六、清理集群
删除 Pod/Deployment:kubectl delete deployment nginx

若使用 kubeadm 重置节点:sudo kubeadm reset

删除 Minikube:minikube delete

删除 Kind:kind delete cluster

七、小结
本文介绍了三种主流的 K8s 集群搭建方式,并重点演练了 kubeadm 搭建生产级集群的完整步骤。无论你选择哪种方式,现在都已经拥有了一个可用的 Kubernetes 环境。下一篇文章将带你熟悉 kubectl 命令,开始管理你的第一个容器。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐