用 kubeadm 搭建自管 Kubernetes 集群,适合学习和中小规模生产。生产环境建议至少 3 个控制面节点和负载均衡 VIP。
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
apt install containerd.io
containerd config default > /etc/containerd/config.toml
# 设置 SystemdCgroup = true
systemctl restart containerd
安装 kubeadm/kubelet/kubectl 并固定版本。
初始化第一个控制面:
kubeadm init \
--control-plane-endpoint=api.example.com:6443 \
--pod-network-cidr=10.244.0.0/16 \
--upload-certs
mkdir -p $HOME/.kube
cp /etc/kubernetes/admin.conf $HOME/.kube/config
kubectl apply -f <cni-manifest>
kubeadm join api.example.com:6443 --token ... --discovery-token-ca-cert-hash ...
kubectl get nodes 全部 Ready。kubeadm reset 后重新加入。kubeadm — 集群初始化kubectl — 集群操作crictl — 节点运行时etcdctl — etcd 备份合上页面,先回答,再展开对照。
kubectl get nodes 全部 Ready、跨节点 Pod 网络和 Service DNS 正常、能部署测试 Deployment/Service/Ingress,且控制面重启后集群能恢复。kubeadm reset 后重新加入并保留 kubeadm 配置和证书;删除生产集群前先备份 etcd 和应用数据。