关于K8S HA,是所有master同时工作还是只有一个master工作?

Do all the masters work at the same time or only one work for cluster about K8S HA?

如果安装2个master的k8s集群为了HA,他们是同时工作还是只有一个工作?

如果使用官方方式:

https://kubernetes.io/docs/tasks/administer-cluster/highly-available-master/

取决于Kubernetes Control Plane的服务:

  • kube-apiserver 在两种情况下都可以 运行
  • kube-controller 和 kube-controller manager 运行 在两个实例中,但只有一个将处于活动状态,这是通过 --leader-elect 标志完成的。

您可以在此处查看有关 --leader-elect 标志的更多详细信息:https://kubernetes.io/docs/reference/generated/kube-controller-manager/

您还可以在本指南中找到 HA 示例:https://github.com/kelseyhightower/kubernetes-the-hard-way/blob/master/docs/08-bootstrapping-kubernetes-controllers.md

免责声明:我假设对您而言,master 确实包含 Etcd。

请不要为HA安装2个master。 运行 两个节点根本没有 HA :) 事实上,也许有点违反直觉,当你 运行 在两个节点上使用 EtcD 时,发生中断导致集群无法运行的概率是 [=16] 的两倍=]更高,而不是更低。 Etcd 需要一定数量的服务器处于活动状态,这通常意味着您需要 50%+1 个节点处于活动状态才能使 HA 保持服务正常运行。在 2 个节点中,50%+1 是……好吧……2。HA 中用于基于共识的复制的最小合理节点数是 3。

在 Etcd 集群中,所有节点都是活跃的,并参与共识协议。 API 服务器是一个非常简单的服务,可以 运行 在任意多的地方并行,它是负责状态协调的底层 etcd。另一方面,Manager-controller 和 Scheduler 本身包含选举逻辑(因此添加更多它们不会提高性能,只会提高中断弹性)