学习 Kubernetes 的第一步是拥有一个可用的集群。本文对比三种常见的搭建方式Minikube本地单节点、kubeadm生产级标准、KindCI 友好并分别给出实操步骤。无论你是初学者还是准备生产部署都能找到合适的方案。最后重点演示 kubeadm 搭建一个多节点集群。一、搭建方式对比选择建议初学者Minikube 最友好。想模拟生产环境kubeadm 在虚拟机或云服务器上搭建。CI/CD 集成或快速测试Kind。二、Minikube 安装与使用2.1 安装 Minikube以 Linux 为例curl-LOhttps://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64sudoinstallminikube-linux-amd64 /usr/local/bin/minikube2.2 启动集群minikube start--driverdocker# 或 virtualbox、kvm2 等首次启动会自动下载镜像并创建虚拟机或容器。2.3 验证minikube status kubectl get nodes2.4 常用功能开启 Dashboardminikube dashboard启用 Ingressminikube addons enable ingress停止集群minikube stop删除集群minikube delete三、Kind 安装与使用3.1 安装 Kind# Linuxcurl-Lo./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64chmodx ./kindsudomv./kind /usr/local/bin/kind3.2 创建多节点集群创建配置文件 kind-config.yamlkind:ClusterapiVersion:kind.x-k8s.io/v1alpha4nodes:-role:control-plane-role:worker-role:worker启动kind create cluster--configkind-config.yaml3.3 验证kubectl cluster-info--contextkind-kind kubectl get nodes3.4 删除集群kind delete cluster四、kubeadm 生产级集群搭建本节以 Ubuntu 22.04 为例搭建一个 Master 节点 两个 Worker 节点的集群。4.1 前置准备所有节点确保各节点之间网络互通并且可以访问外网拉取镜像。安装 containerd推荐或 Docker。本文使用 containerd。# 安装 containerdsudoaptupdatesudoaptinstall-ycontainerd# 生成默认配置sudomkdir-p/etc/containerd containerd config default|sudotee/etc/containerd/config.toml# 修改 cgroup 驱动为 systemdK8s 推荐sudosed-is/SystemdCgroup false/SystemdCgroup true/g/etc/containerd/config.tomlsudosystemctl restart containerd安装 kubeadm、kubelet、kubectl# 添加 K8s 官方 GPG 密钥和仓库sudoaptinstall-yapt-transport-https ca-certificatescurlcurl-fsSLhttps://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key|sudogpg--dearmor-o/etc/apt/keyrings/kubernetes-apt-keyring.gpgechodeb [signed-by/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /|sudotee/etc/apt/sources.list.d/kubernetes.listsudoaptupdatesudoaptinstall-ykubelet kubeadm kubectlsudoapt-mark hold kubelet kubeadm kubectl# 防止自动升级关闭 swapkubelet 要求bashsudoswapoff-a# 永久关闭注释 /etc/fstab 中的 swap 行启用内核模块并调整 sysctlcatEOF|sudotee/etc/modules-load.d/k8s.confoverlay br_netfilter EOFsudomodprobe overlaysudomodprobe br_netfiltercatEOF|sudotee/etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-iptables 1 net.bridge.bridge-nf-call-ip6tables 1 net.ipv4.ip_forward 1 EOFsudosysctl--system4.2 初始化 Master 节点在 master 节点上sudokubeadm init --pod-network-cidr10.244.0.0/16# 使用 Flannel 的默认 CIDR初始化成功后输出类似textYour 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/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown(id−u):(id -u):(id−u):(id -g) $HOME/.kube/configYou 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执行上述命令配置 kubectlmkdir-p$HOME/.kubesudocp-i/etc/kubernetes/admin.conf$HOME/.kube/configsudochown$(id-u):$(id-g)$HOME/.kube/config4.3 安装网络插件CNI集群尚未 ready需要安装网络插件。以 Flannel 为例kubectl apply-fhttps://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml等待 Pod 运行kubectl get pods-nkube-flannel-w4.4 添加 Worker 节点在 worker 节点上执行 master 初始化时输出的 kubeadm join 命令。如果没有记下 token可以在 master 上重新生成kubeadm token create --print-join-command4.5 验证集群kubectl get nodes所有节点应处于 Ready 状态。五、集群基础测试部署一个 Nginx Pod 并暴露 Servicekubectl create deployment nginx--imagenginx kubectl expose deployment nginx--port80--typeNodePort kubectl get svc nginx访问curl http://任意节点IP:应看到 Nginx 欢迎页。六、清理集群删除 Pod/Deploymentkubectl delete deployment nginx若使用 kubeadm 重置节点sudo kubeadm reset删除 Minikubeminikube delete删除 Kindkind delete cluster七、小结本文介绍了三种主流的 K8s 集群搭建方式并重点演练了 kubeadm 搭建生产级集群的完整步骤。无论你选择哪种方式现在都已经拥有了一个可用的 Kubernetes 环境。下一篇文章将带你熟悉 kubectl 命令开始管理你的第一个容器。