Black lives matter.
We stand in solidarity with the Black community.
Racism is unacceptable.
It conflicts with the core values of the Kubernetes project and our community does not tolerate it.
We stand in solidarity with the Black community.
Racism is unacceptable.
It conflicts with the core values of the Kubernetes project and our community does not tolerate it.
在 v1.18 版本中, Kubernetes 支持的最大节点数为 5000。更具体地说,我们支持满足以下所有条件的配置:
集群是一组运行着 Kubernetes 代理的节点(物理机或者虚拟机),这些节点由主控节点(集群级控制面)控制。
通常,集群中的节点数由特定于云平台的配置文件 config-default.sh
(可以参考 GCE 平台的 config-default.sh
)中的 NUM_NODES
参数控制。
但是,在许多云供应商的平台上,仅将该值更改为非常大的值,可能会导致安装脚本运行失败。例如,在 GCE,由于配额问题,集群会启动失败。
因此,在创建大型 Kubernetes 集群时,必须考虑以下问题。
为了避免遇到云供应商配额问题,在创建具有大规模节点的集群时,请考虑:
为了提高大规模集群的性能,我们将事件存储在专用的 etcd 实例中。
在创建集群时,现有 salt 脚本可以:
在 GCE/Google Kubernetes Engine 和 AWS 上,kube-up
会根据节点数量自动为您集群中的 master 节点配置适当的虚拟机大小。在其它云供应商的平台上,您将需要手动配置它。作为参考,我们在 GCE 上使用的规格为:
在 AWS 上使用的规格为
注意: 在 Google Kubernetes Engine 上,主控节点的大小会根据集群的大小自动调整。更多有关信息,请参阅 [此博客文章](https://cloudplatform.googleblog.com/2017/11/Cutting-Cluster-Management-Fees-on-Google-Kubernetes-Engine.html)。 在 AWS 上,主控节点的规格是在集群启动时设置的,并且,即使以后通过手动删除或添加节点的方式使集群缩容或扩容,主控节点的大小也不会更改。
为了防止内存泄漏或 集群插件 中的其它资源问题导致节点上所有可用资源被消耗,Kubernetes 限制了插件容器可以消耗的 CPU 和内存资源(请参阅 PR #10653 和 #10778)。
例如:
containers:
- name: fluentd-cloud-logging
image: k8s.gcr.io/fluentd-gcp:1.16
resources:
limits:
cpu: 100m
memory: 200Mi
除了 Heapster 之外,这些限制都是静态的,并且限制是基于 4 节点集群上运行的插件数据得出的(请参阅 #10335)。在大规模集群上运行时,插件会消耗大量资源(请参阅 #5880)。因此,如果在不调整这些值的情况下部署了大规模集群,插件容器可能会由于达到限制而不断被杀死。
为避免遇到集群插件资源问题,在创建大规模集群时,请考虑以下事项:
Heapster 的资源限制与您集群的初始大小有关(请参阅 #16185 和 #22940)。如果您发现 Heapster 资源不足,您应该调整堆内存请求的计算公式(有关详细信息,请参阅相关 PR)。
关于如何检测插件容器是否达到资源限制,参见 计算资源的故障排除 部分。
未来,我们期望根据集群规模大小来设置所有群集附加资源限制,并在集群扩缩容时动态调整它们。 我们欢迎您来实现这些功能。
出于各种原因(更多详细信息,请参见 #18969),
在 kube-up.sh
中设置很大的 NUM_NODES
时,可能会由于少数节点无法正常启动而失败。
此时,您有两个选择:重新启动集群(运行 kube-down.sh
,然后再运行 kube-up.sh
),或者在运行 kube-up.sh
之前将环境变量 ALLOWED_NOTREADY_NODES
设置为您认为合适的任何值。采取后者时,即使运行成功的节点数量少于 NUM_NODES
,kube-up.sh
仍可以运行成功。根据失败的原因,这些节点可能会稍后加入集群,又或者群集的大小保持在 NUM_NODES-ALLOWED_NOTREADY_NODES
。