高可用拓扑的选项
此页面解释了配置高可用 (HA) Kubernetes 集群拓扑结构的两种选项。
您可以设置一个 HA 集群
- 使用堆叠的控制平面节点,其中 etcd 节点与控制平面节点位于同一位置
- 使用外部 etcd 节点,其中 etcd 在与控制平面分离的节点上运行
在设置 HA 集群之前,您应该仔细考虑每种拓扑结构的优缺点。
注意
kubeadm 静态引导 etcd 集群。 阅读 etcd 集群指南 以获取更多详细信息。堆叠的 etcd 拓扑
堆叠的 HA 集群是一种拓扑结构,其中 etcd 提供的分布式数据存储集群堆叠在由 kubeadm 管理的运行控制平面组件的节点形成的集群之上。
每个控制平面节点运行一个 kube-apiserver
、kube-scheduler
和 kube-controller-manager
实例。kube-apiserver
使用负载均衡器暴露给工作节点。
每个控制平面节点创建一个本地 etcd 成员,并且此 etcd 成员仅与该节点的 kube-apiserver
通信。本地 kube-controller-manager
和 kube-scheduler
实例也是如此。
此拓扑结构将控制平面和 etcd 成员耦合在同一节点上。 它比具有外部 etcd 节点的集群更容易设置,并且更容易管理复制。
但是,堆叠的集群存在耦合失败的风险。如果一个节点发生故障,则 etcd 成员和控制平面实例都会丢失,并且冗余会受到损害。您可以通过添加更多控制平面节点来降低此风险。
因此,您应该为 HA 集群运行至少三个堆叠的控制平面节点。
这是 kubeadm 中的默认拓扑结构。 使用 kubeadm init
和 kubeadm join --control-plane
时,会在控制平面节点上自动创建本地 etcd 成员。
外部 etcd 拓扑
具有外部 etcd 的 HA 集群是一种拓扑结构,其中 etcd 提供的分布式数据存储集群位于运行控制平面组件的节点形成的集群外部。
与堆叠的 etcd 拓扑类似,外部 etcd 拓扑中的每个控制平面节点都运行一个 kube-apiserver
、kube-scheduler
和 kube-controller-manager
实例。 并且 kube-apiserver
使用负载均衡器暴露给工作节点。 但是,etcd 成员在单独的主机上运行,并且每个 etcd 主机都与每个控制平面节点的 kube-apiserver
通信。
此拓扑结构将控制平面和 etcd 成员分离。 因此,它提供了一个 HA 设置,其中丢失控制平面实例或 etcd 成员的影响较小,并且不会像堆叠的 HA 拓扑结构那样影响集群冗余。
但是,此拓扑结构需要的主机数量是堆叠的 HA 拓扑结构的两倍。 采用此拓扑结构的 HA 集群,至少需要三个控制平面节点主机和三个 etcd 节点主机。