为什么kubernetes会用“";NoSchedule“;默认情况下?

为什么kubernetes会用“";NoSchedule“;默认情况下?,kubernetes,Kubernetes,几天前,我查找了为什么没有任何POD被调度到主节点,并发现了以下问题: 它告诉我们这是因为主节点受到了“NoSchedule”效果的污染,并给出了删除该污染的命令 但在我在集群上执行该命令之前,我想先了解它为什么存在 主节点不应该运行pods有什么原因吗?与之相关的任何最佳实践?主机的主要角色是群集管理。k8的许多组件已经在master上运行。假设如果在master上调度的POD没有资源限制,并且POD正在消耗所有资源(cpu或内存),那么master和整个集群都将面临风险 因此,在设计高可用性

几天前,我查找了为什么没有任何POD被调度到主节点,并发现了以下问题:

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

但在我在集群上执行该命令之前,我想先了解它为什么存在


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

主机的主要角色是群集管理。k8的许多组件已经在master上运行。假设如果在master上调度的POD没有资源限制,并且POD正在消耗所有资源(cpu或内存),那么master和整个集群都将面临风险


因此,在设计高可用性生产集群时,至少会创建3个主节点、3个etcd节点和3个infra节点,并且不会在这些节点上安排应用程序吊舱。添加单独的工作节点以分配工作负载

主机的主要角色是群集管理。k8的许多组件已经在master上运行。假设如果在master上调度的POD没有资源限制,并且POD正在消耗所有资源(cpu或内存),那么master和整个集群都将面临风险


因此,在设计高可用性生产集群时,至少会创建3个主节点、3个etcd节点和3个infra节点,并且不会在这些节点上安排应用程序吊舱。添加单独的工作节点以分配工作负载

kubernetes的目的是轻松部署应用程序,并根据需求进行扩展。pod是运行应用程序的基本实体,可以根据高需求和低需求分别增加和减少(水平pod自动缩放)

这些辅助节点需要在辅助节点上运行,特别是当您正在研究一个大型应用程序时,您的集群可能会根据需要扩展到100个节点(集群自动缩放)。这些不断增加的POD会对您的节点施加压力,一旦它们增加了,您就可以使用cluster autoscalar增加集群中的工作节点。 假设您使您的主机可调度,那么高内存和CPU压力使您的主机面临崩溃的风险。请注意,不能使用autoscalar自动缩放主控形状。这样做会使整个集群处于危险之中。如果您只有一个主服务器,那么如果主服务器崩溃,您将无法安排任何事情。如果有3个主节点,其中一个发生故障,那么其他两个主节点必须承担额外的调度和管理工作节点的负载,并增加自身的负载,从而增加故障风险

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


如果您有可管理的工作负载,并且您知道它不会超过某个级别。您可以使master可调度。但是,对于生产集群,根本不建议使用它。

kubernetes的目的是方便地部署应用程序,并根据需求进行扩展。pod是运行应用程序的基本实体,可以根据高需求和低需求分别增加和减少(水平pod自动缩放)

这些辅助节点需要在辅助节点上运行,特别是当您正在研究一个大型应用程序时,您的集群可能会根据需要扩展到100个节点(集群自动缩放)。这些不断增加的POD会对您的节点施加压力,一旦它们增加了,您就可以使用cluster autoscalar增加集群中的工作节点。 假设您使您的主机可调度,那么高内存和CPU压力使您的主机面临崩溃的风险。请注意,不能使用autoscalar自动缩放主控形状。这样做会使整个集群处于危险之中。如果您只有一个主服务器,那么如果主服务器崩溃,您将无法安排任何事情。如果有3个主节点,其中一个发生故障,那么其他两个主节点必须承担额外的调度和管理工作节点的负载,并增加自身的负载,从而增加故障风险

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


如果您有可管理的工作负载,并且您知道它不会超过某个级别。您可以使master可调度。但是,对于生产群集,根本不建议使用它。

Master用于群集管理任务,不应用于运行工作负载。在开发和测试环境中,可以在主服务器上安排POD,但在生产环境中,最好将其仅用于集群级别的管理活动。使用工作线程或节点来安排工作负载主节点用于群集管理任务,不应用于运行工作负载。在开发和测试环境中,可以在主服务器上安排POD,但在生产环境中,最好将其仅用于集群级别的管理活动。使用工作线程或节点来安排工作负载