导语 | 在企业生产环境,Kubernetes高可用是一个必不可少的特性,其中最通用的场景就是如何在Kubernetes集群宕机一个节点的情况下保障服务依旧可用。本文对在该场景下实现集群和应用高可用过程中遇到的各种问题进行了梳理和总结,希望与大家一同交流。文章作者,腾讯云架构服务研发工程师。
一、整体架构
1. control plane node
管理节点采用 kubeadm 搭建的 3 节点标准高可用方案:Stacked etcd topology [1].
该方案中,所有管理节点都部署 kube-apiserver,kube-controller-manager,kube-scheduler,以及 etcd 等组件。
kube-apiserver 均与本地的 etcd 进行通信,etcd 在三个节点间同步数据。而 kube-controller-manager 和 kube-scheduler 也只与本地的 kube-apiserver 进行通信(或者通过 LB 访问)。
kube-apiserver 前面顶一个 LB;work 节点 kubelet 以及 kube-proxy 组件对接 LB 访问 apiserver 。
在这种架构中,如果其中任意一个 master 节点宕机了,由于 kube-controller-manager 以及 kube-scheduler 基于 Leader Election Mechanism [2]实现了高可用,可以认为管理集群不受影响,相关组件依旧正常运行(在分布式锁释放后)。
原文链接:【https://www.infoq.cn/article/aMsCvWzhR1It5CxpDWXK】。未经作者许可,禁止转载。