为什么 kubernetes 默认使用“NoSchedule”污染主节点?

Tom*_*ino 2 kubernetes

前几天了一下为什么没有pod被调度到master节点,发现了这个问题:Allow schedule of pods on Kubernetes master?

它告诉这是因为主节点被“NoSchedule”效果污染了,并给出了删除该污染的命令。

但是在我在集群上执行该命令之前,我想首先了解它为什么会出现在那里。

主节点不应该运行 Pod 有什么原因吗?任何与它相关的最佳实践?

Pra*_*dha 6

kubernetes 的目的是轻松部署应用程序并根据需求扩展它们。Pod 是运行应用程序的基本实体,可以分别根据高低需求进行增减(Horizo​​ntal Pod Autoscalar)。

如果您正在查看大型应用程序,其中您的集群可能会根据需要扩展到 100 个节点(集群自动标量),则这些工作程序 Pod 需要在工作程序节点上运行。这些增加的 pod 会给您的节点带来压力,一旦它们这样做,您就可以始终使用集群自动标量增加集群中的工作节点。假设,您使 master 可调度,然后高内存和 CPU 压力使您的 master 面临使 master 崩溃的风险。请注意,您不能使用自动标量自动缩放主。这样,您将整个集群置于危险之中。如果您只有一个 master,那么如果 master 崩溃,您将无法安排任何事情。如果你有 3 个 master 并且其中一个崩溃了,

此外,对于较大的集群,您已经需要具有高资源的主节点来管理您的工作节点。在这种情况下,您不能在主节点上放置额外的负载来运行工作负载。请在此处查看在 kubernetes 中设置大型集群

如果您有可管理的工作量并且您知道它不会增加超过某个水平。您可以使 master 成为可调度的。但是对于生产集群,根本不推荐使用。