Kubernetes Tutorial: Build a Cluster in 13 Steps (2026 Guide)(2026-07-09)
如果你在2026年还不会搭建Kubernetes集群,就像2020年不会用Docker一样——不是不能工作,而是注定要绕远路。本教程将用13个步骤,让你从零开始,拥有一套可运行的Kubernetes集群。无论你是后端开发者、运维工程师,还是自学编程的“孤狼”,这套流程都能直接落地。
为什么你需要自己搭集群?
很多人问:用云厂商的托管K8s不香吗?答案是:香,但你学不到核心。根据2025年CNCF的调查报告,超过67%的Kubernetes故障发生在集群配置和网络层。当你自己手搭一次集群,你才能真正理解Pod调度、CNI插件、etcd高可用这些概念。更重要的是,本地集群每月只花你不到100块钱的电费,而托管服务动辄上千。
13步搭建一个完整集群
第一步:准备节点(3台Ubuntu 24.04)
最低配置:1台Master(2核4G)+ 2台Worker(1核2G)。建议用虚拟机或物理机,避免Docker Desktop的“假集群”。
# 所有节点执行
sudo apt update && sudo apt upgrade -y
第二步:安装容器运行时(containerd 2.0)
2026年,Docker已不再是K8s默认运行时。containerd更轻量、更安全。
sudo apt install -y containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo systemctl restart containerd
第三步:关闭Swap(必须)
Kubernetes要求swap关闭,否则kubelet会罢工。
sudo swapoff -a
sudo sed -i '/ swap / s/^/#/' /etc/fstab
第四步:安装Kubernetes组件(v1.30)
使用阿里云镜像加速(国内用户必备)。
curl -fsSL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | 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
第五步:初始化Master节点
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=你的MasterIP
记录输出的kubeadm join命令,后面Worker节点要用。
第六步:配置kubectl(普通用户)
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
第七步:安装Pod网络插件(Flannel)
网络插件是集群能通信的关键。
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
第八步:加入Worker节点
在Worker节点上执行Master初始化输出的kubeadm join命令。如果忘了,可以在Master上重新生成:
kubeadm token create --print-join-command
第九步:验证集群状态
kubectl get nodes
# 输出应为 Ready 状态
NAME STATUS ROLES AGE VERSION
master-1 Ready control-plane 5m v1.30.0
worker-1 Ready <none> 2m v1.30.0
worker-2 Ready <none> 2m v1.30.0
第十步:部署一个测试应用(实战案例)
kubectl create deployment nginx --image=nginx:latest --replicas=3
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get svc
# 用浏览器访问任意Worker节点IP:NodePort
第十一步:启用Dashboard(可视化控制)
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
kubectl create serviceaccount admin-user -n kubernetes-dashboard
kubectl create clusterrolebinding admin-user --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:admin-user
kubectl -n kubernetes-dashboard create token admin-user
第十二步:配置自动扩缩容(生产必备)
kubectl autoscale deployment nginx --min=2 --max=10 --cpu-percent=50
第十三步:备份etcd(保命操作)
sudo ETCDCTL_API=3 etcdctl snapshot save /backup/etcd-snapshot.db \
--endpoints=https://127.0.0.1:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key
实用建议:避坑指南
- 网络端口一定要放通:Master节点的6443(API Server)、2379(etcd)、10250(kubelet);Worker节点的30000-32767(NodePort)。
- 硬盘不够? 使用LVM或分区时,给/var/lib/containerd至少20GB闲置空间。
- 生产环境不要用Flannel:改用Calico或Cilium,支持网络策略和eBPF。
数据来源:2025年CNCF调查显示,使用Calico的集群故障率比Flannel低43%。
下一步行动
集群搭完了?别停。去部署一个真正的微服务应用,比如一个带PostgreSQL的REST API。当你手动实现滚动更新、回滚、资源限制时,你才算真正入门了K8s。现在就打开终端,开始第1步吧。
免责声明:本教程仅供学习和测试使用。生产环境中,请务必结合企业合规要求、安全审计和性能基准测试。作者不对因直接复现本教程导致的数据丢失、服务中断或安全风险承担责任。Kubernetes版本更新较快,具体命令请以对应版本的官方文档为准。