推荐的集群架构
有三个角色可以分配给节点,分别是 etcd
、controlplane
和 worker
。
将 Worker 节点与具有其他角色的节点分开
在设计集群时,你有两种选择:
-
为每个角色使用专用节点。这确保了特定角色所需组件的资源可用性。它还根据端口要求严格隔离每个角色之间的网络流量。
-
将
etcd
和controlplane
角色分配给相同的节点。该节点必须满足这两个角色的硬件要求。
无论在哪种情况下,都不应该在具有 etcd
或 controlplane
角色的节点中使用或添加 worker
角色。
因此,每个节点的角色都有如下几种配置选择:
-
etcd
-
controlplane
-
etcd
和controlplane
-
worker
每个角色的推荐节点数
集群应该有:
-
至少拥有三个角色为
etcd
的节点,来确保失去一个节点时仍能存活。增加 etcd 节点数量能提高容错率,而将 etcd 分散到不同可用区甚至能获取更好的容错能力。 -
至少两个节点具有
controlplane
角色,以实现主组件高可用性。 -
至少两个具有
worker
角色的节点,用于在节点故障时重新安排工作负载。
有关每个角色的用途的更多信息,请参阅 Kubernetes 中的节点角色。
etcd 节点数
在保持集群可用性的同时,可以一次丢失的节点数由分配了 etcd
角色的节点数决定。对于具有 n 个成员的集群,最小值为 (n/2)+1。因此,我们建议在一个区域内的 3 个不同可用区中各创建一个 etcd
节点,以在一个可用区丢失的情况下存活。如果你只使用两个区域,那么在"`多数节点`"所在的可用区不可用时,你将会丢失 etcd 集群。
具有 etcd 角色的节点 |
多数节点 | 容错能力 |
---|---|---|
1 |
1 |
0 |
2 |
2 |
0 |
3 |
2 |
1 |
4 |
3 |
1 |
5 |
3 |
2 |
6 |
4 |
2 |
7 |
4 |
3 |
8 |
5 |
3 |
9 |
5 |
4 |
参考:
为什么 Rancher 集群和运行应用的集群的生产要求不同
你可能已经注意到我们的 Kubernetes 安装说明并不符合我们对生产就绪集群的要求,这是因为 worker
角色没有专用节点。然而,你 Rancher 中的这个三节点集群是有效的,因为:
-
它允许一个
etcd
节点故障。 -
它通过多个
controlplane
节点来维护 master 组件的多个实例。 -
此集群上没有创建除 Rancher 之外的其他工作负载。