首页主机资讯centos k8s高可用架构

centos k8s高可用架构

时间2025-11-18 11:04:04发布访客分类主机资讯浏览1485
导读: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)
    • 使用 HAProxy6443 端口做四层转发,后端为所有控制平面节点;在 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 命令加入。
  • 网络插件
    • 选择 CalicoFlannel 等 CNI,部署后确认节点 Ready、Pod 间网络与 NodePort/LoadBalancer 可达。
  • 验证高可用
    • 检查节点与控制平面组件状态:kubectl get nodes;查看 kube-apiserver/etcd/controller-manager/schedulerleaderEndpoints;对 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
  • 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
CentOS JMeter内存溢出问题怎么解决 centos k8s迁移指南

游客 回复需填写必要信息