Kubernetes 企业级高可用部署架构设计全解:9 年生产实践经验萃取
一、引言
早在 2016 年,笔者在项目中与研发团队密切配合,推动 Kubernetes 1.4.6版本在生产环境中的落地实践,极大提升了部署效率与系统弹性,见证了 K8s 技术在企业中的普及与发展,以及企业对 K8s 专业人才需求的持续增长。随着系统架构逐步走向微服务化与容器化,Kubernetes 已成为业界事实上的容器编排标准。
然而,在实际生产环境中,Kubernetes 的高可用部署架构是保障业务稳定运行和连续服务的关键。本方案旨在设计并实现一个具备多层次高可用能力、弹性扩展特性以及运维友好性的 Kubernetes 集群,既适用于初学者学习实践,也能满足企业级系统的稳定性与可用性需求。
二、设计目标
- 实现 Kubernetes 控制平面高可用,避免单点故障。
- 保证 Node 节点访问** kube-apiserver **的路径具备容灾能力。
- etcd 集群具备强一致性和可恢复性。
- 支持 节点故障自动恢复与负载均衡。
- 业务访问与集群控制面访问相互隔离,提高系统稳定性。
- 保持架构的 弹性、可扩展、易运维。
三、整体架构设计
3.1 架构图
3.2 高可用架构设计说明
控制平面:
- 三个 Master 节点,各运行 kube-apiserver、controller-manager、scheduler,与 etcd 共集群
数据存储层:
- etcd 组成 3 节点集群,确保强一致性和高可用性
计算节点层:
- 每个 Node 节点上运行一个本地 Nginx 进程监听
127.0.0.1:8443
作为反向代理。 - Nginx 负责将 kubelet 请求转发到任意健康的 Master 节点(通过轮询或健康检查策略)。
- kubelet 配置访问本地地址
127.0.0.1:8443
,通过 Nginx 间接访问 3 个 kube-apiserver 的 6443 端口。 - 实现 kubelet 本地化访问,防止 Master 单点故障影响。
业务入口:
- 外部用户访问业务服务通过外部负载均衡器(如 ELB、Nginx LB)接入 Node 上的 Ingress 或 Service,当然也可以使用外部负载均衡器(如 ELB、NLB)接入 Node 上的 NodePort。
网络与存储: - 建议使用 Calico/Cilium 作为 CNI,持久化存储使用 Ceph、NFS、或云原生存储
观测与告警: - 使用 Prometheus、Grafana、Loki、Alertmanager 进行全栈监控与日志管理,参考我的另一篇文章。
四、Node 本地 Nginx 配置示例
4.1 Step 1:配置 Node 节点上的 Nginx
安装 Nginx
sudo apt update
sudo apt install -y nginx
创建配置文件 /etc/nginx/conf.d/k8s-api-proxy.conf
events {}
http {
upstream kube_apiservers {
server 10.0.0.11:6443 max_fails=3 fail_timeout=10s;
server 10.0.0.12:6443 max_fails=3 fail_timeout=10s;
server 10.0.0.13:6443 max_fails=3 fail_timeout=10s;
}
server {
listen 127.0.0.1:8443;
location / {
proxy_pass https://kube_apiservers;
proxy_ssl_verify off;
}
}
}
启动并设置 Nginx 自启
sudo systemctl restart nginx
sudo systemctl enable nginx
4.2 Step 2:配置 kubelet 指向本地代理
在 Node 节点上修改 kubelet 配置(/var/lib/kubelet/config.yaml
或启动参数):
server: https://127.0.0.1:8443
或:
kubelet --api-servers=https://127.0.0.1:8443
重启 kubelet:
sudo systemctl restart kubelet
五、解决的痛点
Master 单点故障: 多 Master 架构 + 本地代理转发
etcd 崩溃或数据不一致: 奇数节点组成 etcd 集群 + 定期快照
工作节点宕机导致业务中断: 多副本部署 + Pod 亲和/反亲和 + 自动调度
网络不稳定: Calico/Cilium 提供容器内网稳定通信
存储丢失: 使用分布式存储 + 多副本机制
日志难排查、指标不可见: 标准监控链路 Prometheus + Grafana + Loki
六、总结
本高可用架构方案基于三主节点架构,在每个 Node 节点部署本地 Nginx 反向代理,结合 LB 实现业务统一接入,它兼顾了稳定性、易运维性和扩展性,适合初学者在小型到中型甚至大型生产环境中实践使用。
对于企业级集群,还可以在此基础上引入自动证书管理(如 cert-manager)、服务网格(Istio/Linkerd)等技术进一步增强安全性与治理能力。
高可用 Kubernetes 架构设计并非一蹴而就,而是根据业务实际需求、部署规模、预算和技术团队能力不断演进。
🔔 更多原创内容、技术干货,欢迎关注微信公众号 「键上江湖」,与你一键相逢!
重点提醒**:喜欢请加关注哦 !**