在私有数据中心使用kubeadm部署高可用Kubernetes集群时,需重点关注控制平面的冗余设计,具体实施步骤如下:
-
控制平面高可用架构:
- 采用至少3个控制节点(Control Plane),建议选择堆叠式etcd拓扑(Stacked etcd)或独立etcd集群方案。前者每个控制节点同时运行kube-apiserver和etcd,后者需单独部署etcd集群。
-
负载均衡配置:
- 在控制节点前部署负载均衡器(如HAProxy/Nginx),暴露kube-apiserver的6443端口。需确保LB自身高可用(VIP+Keepalived或硬件负载均衡)。
-
证书与配置同步:
- 使用
kubeadm init
初始化首个控制节点时,通过--control-plane-endpoint
参数指定LB的VIP地址。 - 使用
kubeadm join
加入其他控制节点时需携带--control-plane
标志,并确保同步/etc/kubernetes/pki目录下的CA证书。
- 使用
-
关键组件优化:
- 部署CoreDNS副本数为3,配置反亲和策略
- 采用高可用网络插件(如Calico的BGP模式或Cilium)
- 配置kube-controller-manager和kube-scheduler的Leader Election机制
-
验证与运维:
- 使用
kubectl get nodes -o wide
确认节点状态 - 通过模拟节点故障测试故障转移
- 定期备份etcd数据(etcdctl snapshot save)
- 使用
注:若使用私有镜像仓库,需预先将k8s.gcr.io镜像同步至内网,并在kubeadm配置中指定local registry路径。