推荐的集群架构

有三个角色可以分配给节点,分别是 etcdcontrolplaneworker

将 Worker 节点与具有其他角色的节点分开

在设计集群时,你有两种选择:

  • 为每个角色使用专用节点。这确保了特定角色所需组件的资源可用性。它还根据端口要求严格隔离每个角色之间的网络流量。
  • etcdcontrolplane 角色分配给相同的节点。该节点必须满足这两个角色的硬件要求。

无论在哪种情况下,都不应该在具有 etcdcontrolplane 角色的节点中使用或添加 worker 角色。

因此,每个节点的角色都有如下几种配置选择:

  • etcd
  • controlplane
  • etcdcontrolplane
  • worker

每个角色的推荐节点数

集群应该有:

  • 至少拥有三个角色为 etcd 的节点,来确保失去一个节点时仍能存活。增加 etcd 节点数量能提高容错率,而将 etcd 分散到不同可用区甚至能获取更好的容错能力。
  • 至少两个节点具有 controlplane 角色,以实现主组件高可用性。
  • 至少两个具有 worker 角色的节点,用于在节点故障时重新安排工作负载。

有关每个角色的用途的更多信息,请参阅 Kubernetes 中的节点角色

controlplane 节点数

添加多个具有 controlplane 角色的节点,使每个主组件都具有高可用性。

etcd 节点数

在保持集群可用性的同时,可以一次丢失的节点数由分配了 etcd 角色的节点数决定。对于具有 n 个成员的集群,最小值为 (n/2)+1。因此,我们建议在一个区域内的 3 个不同可用区中各创建一个 etcd 节点,以在一个可用区丢失的情况下存活。如果你只使用两个区域,那么在“多数节点”所在的可用区不可用时,你将会丢失 etcd 集群。

具有 etcd 角色的节点多数节点容错能力
110
220
321
431
532
642
743
853
954

参考:

Worker 节点数

添加多个具有 worker 角色的节点能确保一个节点出现故障时可以重新安排工作负载。

为什么 Rancher 集群和运行应用的集群的生产要求不同

你可能已经注意到我们的 Kubernetes 安装说明并不符合我们对生产就绪集群的要求,这是因为 worker 角色没有专用节点。然而,你 Rancher 中的这个三节点集群是有效的,因为:

  • 它允许一个 etcd 节点故障。
  • 它通过多个 controlplane 节点来维护 master 组件的多个实例。
  • 此集群上没有创建除 Rancher 之外的其他工作负载。

参考