Ubuntu 22.04 部署 Kubernetes 1.28 高可用(一)
随着业务规模扩大和系统稳定性要求的不断提升,单 Master 的 Kubernetes 集群在生产环境中已经难以满足高可用需求。一旦 Master 节点发生故障,集群将面临 API 不可用、调度停止等风险,严重影响业务运行。
Kubernetes 官方推荐通过多 Master + etcd 集群的方式构建高可用控制平面,但在多 Master 架构下,如何为 kube-apiserver 提供统一、稳定的访问入口,成为集群高可用部署中的关键问题。
在生产实践中,常见的解决方案是通过 Keepalived + Nginx:
- Keepalived 提供 VIP 漂移能力,保证访问入口的高可用
- Nginx 作为四层或七层负载均衡器,将请求分发到后端多个 Master 节点上的 kube-apiserver
- 多个 Master 节点同时运行 kube-apiserver / controller-manager / scheduler,并配合 etcd 集群实现控制平面的整体高可用
本篇将基于 Kubernetes 1.28 版本,详细介绍一种生产可落地的高可用部署方案,通过多 Master + 多 etcd 架构、Keepalived 提供 VIP、Nginx 实现 kube-apiserver 的负载均衡,构建一个稳定、可靠、可扩展的 Kubernetes 高可用集群。
一、整体架构说明
本方案采用三 Master + 两节点负载均衡的经典高可用架构:
- 控制平面高可用:多个 Master 节点同时运行 kube-apiserver、controller-manager、scheduler 组件
- etcd 高可用:每个 Master 节点部署一个 etcd 实例,组成三节点 etcd 集群
- 访问入口高可用:Keepalived 提供 VIP,Nginx 监听 VIP 并将请求负载到后端 Master 节点
无论单个 Master、单个 etcd 节点,还是单个负载均衡节点发生故障,集群都可以自动切换,确保 Kubernetes API 服务持续可用。
二、环境准备
| 服务器 | 主机名 | IP 地址 | 主要组件 |
|---|---|---|---|
| master-01 + etcd-01 节点 | k8s-master-1 | 192.168.24.31 | apiserver controller-manager scheduler proxy etcd |
| master-02 + etcd-02 节点 | k8s-master-2 | 192.168.24.32 | apiserver controller-manager scheduler proxy etcd |
| master-03 + etcd-03 节点 | k8s-master-3 | 192.168.24.33 | apiserver controller-manager scheduler proxy etcd |
| node-01 节点 | k8s-node-1 | 192.168.24.34 | kubelet proxy(资源有限,本 demo 只使用一个 node 节点) |
| nginx + keepalive-01 节点 | keepalived-1 | 192.168.24.35 | nginx keepalived(主) |
| nginx + keepalive-02 节点 | keepalived-2 | 192.168.24.36 | nginx keepalived(备) |
三、Kubeadm 部署 K8S 集群
1. 安装常用依赖(每台服务器)
apt install iproute2 net-tools ntpdate tcpdump telnet traceroute nfs-kernel-server nfs-common lrzsz tree openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev gcc openssh-server iotop unzip vim -y





