从零搭建 Kubernetes 集群

适用场景

用 kubeadm 搭建自管 Kubernetes 集群,适合学习和中小规模生产。生产环境建议至少 3 个控制面节点和负载均衡 VIP。

前置条件

步骤

  1. 基础准备(所有节点):
swapoff -a
sed -i '/ swap / s/^/#/' /etc/fstab
modprobe overlay
modprobe br_netfilter
cat >/etc/sysctl.d/k8s.conf <<'EOF'
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system
  1. 安装 containerd 并配置 systemd cgroup:
apt install containerd.io
containerd config default > /etc/containerd/config.toml
# 设置 SystemdCgroup = true
systemctl restart containerd
  1. 安装 kubeadm/kubelet/kubectl 并固定版本。

  2. 初始化第一个控制面:

kubeadm init \
  --control-plane-endpoint=api.example.com:6443 \
  --pod-network-cidr=10.244.0.0/16 \
  --upload-certs
  1. 配置 kubeconfig:
mkdir -p $HOME/.kube
cp /etc/kubernetes/admin.conf $HOME/.kube/config
  1. 安装 CNI(Calico/Cilium/Flannel,按需求选择):
kubectl apply -f <cni-manifest>
  1. 加入其他控制面和 worker:
kubeadm join api.example.com:6443 --token ... --discovery-token-ca-cert-hash ...
  1. 安装基础组件:Ingress Controller、metrics-server、存储 CSI、日志/监控。

验证

回滚/重建

常见坑

相关命令

读完自测

合上页面,先回答,再展开对照。

  1. 生产环境对控制面节点数量和 API 入口有什么前置要求?
  2. 集群搭建完成后,如何验证它不只是节点 Ready,而是真正可用?
  3. 节点需要重建或生产集群要删除时,回滚和备份步骤是什么?
答案
  1. 至少 3 个控制面节点,并准备负载均衡 VIP/API 入口。
  2. 验证 kubectl get nodes 全部 Ready、跨节点 Pod 网络和 Service DNS 正常、能部署测试 Deployment/Service/Ingress,且控制面重启后集群能恢复。
  3. 节点可用 kubeadm reset 后重新加入并保留 kubeadm 配置和证书;删除生产集群前先备份 etcd 和应用数据。