在设计集群时,您有两个选择:

  • etcdcontrolplane角色分配给相同的节点。这些节点必须满足这两个角色的硬件需求。

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

  • controlplane
  • etcdcontrolplane
  • worker

集群应该具有:

  • 至少有三个角色为 etcd 的节点,这样可以在丢失一个节点时存活下来。增加这个数量以获得更高的节点容错率,并将它们分散到多个可用区,以提供更好的容错能力。
  • 分配至少两个 worker 节点,以在节点出现故障时,可以重新调度您的工作负载。

有关每个角色的用途的更多信息,请参阅。

在维护集群可用性时,可以一次性丢失的节点数量是由etcd角色的节点数量决定。etcd 认为写入请求被 Leader 节点处理并分发给了“多数节点”后,就是一个成功的写入。对于一个有 n 个成员的 etcd 集群,“多数节点”是(n/2)+1。因此,我们建议在一个区域内的 3 个不同的可用区中各创建一个etcd 节点,这样在失去一个可用区时,etcd 仍生存下来。如果您只使用两个区域,那么在“多数节点”所在的可用区不可用时,您将会丢失 etcd 集群。

参考:

您可能已经注意到,我们的Rancehr Server 高可用安装指南并不符合我们对生产就绪集群的定义。因为没有专用的节点作为worker节点。但是,对于 Rancehr Server 的部署,这三个节点的集群是有效的,因为:

  • 它允许一个etcd节点失败。
  • 它通过拥有多个controlplane节点来维护 master 组件的多个实例。
  • 除了 Rancher 本身之外,不应该在此集群上创建其他工作负载。