centos k8s高可用架构
导读:CentOS 上 Kubernetes 高可用架构与落地方案 一、架构总览 面向生产的最小高可用拓扑通常为:3 台控制平面节点 + 至少 2 台工作节点,并提供一个对外的 VIP/负载均衡地址 作为 API Server 的单一入口。控制...
CentOS 上 Kubernetes 高可用架构与落地方案
一、架构总览
- 面向生产的最小高可用拓扑通常为:3 台控制平面节点 + 至少 2 台工作节点,并提供一个对外的 VIP/负载均衡地址 作为 API Server 的单一入口。控制平面组件的高可用要点如下:
- kube-apiserver:无状态,通过 VIP + Keepalived 或外部 HAProxy/Keepalived 对外暴露,故障时 VIP 漂移到健康节点,实现主备/多主访问连续性。
- etcd:建议与控制平面共置,部署为奇数节点(推荐 3/5)的集群,依靠Raft共识实现高可用,3 节点可容忍 1 台故障。
- kube-controller-manager / kube-scheduler:内置 leader election,同一时刻仅有一个实例为 leader,其余待命,天然高可用。
- 该模式已在 CentOS 7 系列环境中被广泛验证,适合中小规模生产部署与演练环境。
二、两种常见实现路径
- 路径 A(外部 LB + Keepalived)
- 使用 HAProxy 对 6443 端口做四层转发,后端为所有控制平面节点;在 HAProxy 前叠加 Keepalived 提供 VIP,对外暴露统一地址(如 LOAD_BALANCER_DNS:LOAD_BALANCER_PORT)。
- 初始化与扩容时使用 –control-plane-endpoint=VIP:6443 与 –upload-certs,kubeadm 会自动在控制平面间分发证书,便于多控制平面加入。
- 路径 B(仅 Keepalived VIP)
- 在每个控制平面节点运行 Keepalived,配置相同的 VRRP 参数与 VIP,通过优先级实现 Master 抢占/漂移;API Server 直连本机 127.0.0.1:6443 或通过 VIP 访问。
- 配置更轻量,但对网络与 VRRP 参数一致性要求较高,适合对外部负载均衡依赖受限的场景。
三、关键配置要点
- 基础环境(所有节点)
- 关闭 swap:swapoff -a 并注释 /etc/fstab 中的 swap 行;设置主机名并配置 /etc/hosts 保证互通;确保 MAC/UUID 唯一;按需关闭 firewalld/SELinux 或放行相关端口。
- 容器运行时与 kubeadm
- 安装 containerd/kubelet/kubeadm(或 Docker + kubeadm),启用并自启 kubelet;按需配置镜像仓库加速与 cgroup 驱动一致。
- 控制平面初始化与扩容
- 第一个控制平面:kubeadm init –control-plane-endpoint=VIP:6443 --upload-certs --pod-network-cidr=10.244.0.0/16(示例);完成后按提示配置 kubectl。
- 其余控制平面:使用 kubeadm 输出的 **join 命令(含 --control-plane 与 --certificate-key)**加入;工作节点使用 worker join 命令加入。
- 网络插件
- 选择 Calico 或 Flannel 等 CNI,部署后确认节点 Ready、Pod 间网络与 NodePort/LoadBalancer 可达。
- 验证高可用
- 检查节点与控制平面组件状态:kubectl get nodes;查看 kube-apiserver/etcd/controller-manager/scheduler 的 leader 与 Endpoints;对 VIP/负载均衡 进行故障转移演练(停掉某台控制平面或断开网卡)。
四、示例配置片段
- HAProxy(示例:对外 VIP 为 10.152.0.6,监听 16443,后端转发至 6443)
- frontend k8s
- bind *:16443
- mode tcp
- default_backend k8s
- backend k8s
- mode tcp
- balance roundrobin
- server k8s-master1 192.168.1.10:6443 check
- server k8s-master2 192.168.1.11:6443 check
- server k8s-master3 192.168.1.12:6443 check
- frontend k8s
- Keepalived(示例:VRRP 实例,VIP 10.152.0.6/24,网卡 ens224)
- vrrp_script check_server { script “/etc/keepalived/check.sh”; interval 3; weight -10; fall 2; rise 1 }
- vrrp_instance VI_1 {
- state BACKUP
- interface ens224
- virtual_router_id 51
- priority 50
- advert_int 2
- authentication { auth_type PASS; auth_pass 123 }
- virtual_ipaddress { 10.152.0.6/24 }
- track_script { check_server }
- }
- 初始化命令示例(第一个控制平面)
- kubeadm init --control-plane-endpoint=“10.152.0.6:16443” --upload-certs --pod-network-cidr=10.244.0.0/16
- 加入命令示例(控制平面/工作节点)
- 控制平面:kubeadm join 10.152.0.6:16443 --token --discovery-token-ca-cert-hash --control-plane --certificate-key < CERT_KEY>
- 工作节点:kubeadm join 10.152.0.6:16443 --token --discovery-token-ca-cert-hash 说明:上述 VIP/端口/网卡/CIDR 需按实际环境替换;健康检查脚本需实现对 6443 或进程存活的探测。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos k8s高可用架构
本文地址: https://pptw.com/jishu/749921.html
