6.4. 管理每个节点的 pod 数量上限
在 OpenShift Container Platform 中,您可以根据节点上的处理器内核数和/或硬限制,来配置可在节点上运行的 pod 数量。如果您同时使用这两个选项,则取两者中较小的限制来限制节点上的 pod 数。
当两个参数都被设置时,其中较小的值限制了节点上的 pod 数量。超过这些值可导致:
- CPU 使用率增加。
- 减慢 pod 调度的速度。
- 根据节点中的内存数量,可能出现内存耗尽的问题。
- 耗尽 IP 地址池。
- 资源过量使用,导致用户应用程序性能变差。
在 Kubernetes 中,包含单个容器的 pod 实际使用两个容器。第二个容器用来在实际容器启动前设置联网。因此,运行 10 个 pod 的系统实际上会运行 20 个容器。
云供应商的磁盘 IOPS 节流可能会对 CRI-O 和 kubelet 产生影响。当节点上运行大量 I/O 高负载的 pod 时,可能会出现超载的问题。建议您监控节点上的磁盘 I/O,并使用有足够吞吐量的卷。
				podsPerCore 参数根据节点上的处理器内核数来设置节点可运行的 pod 数量。例如:在一个有 4 个处理器内核的节点上将 podsPerCore 设为 10 ,则该节点上允许的最大 pod 数量为 40。
			
kubeletConfig: podsPerCore: 10
kubeletConfig:
  podsPerCore: 10
				将 podsPerCore 设置为 0 可禁用这个限制。默认值为 0。podsPerCore 参数的值不能超过 maxPods 参数的值。
			
				maxPods 参数将节点可以运行的 pod 数量设置为固定值,而不考虑节点的属性。
			
 kubeletConfig:
    maxPods: 250
 kubeletConfig:
    maxPods: 2506.4.1. 配置每个节点的最大 pod 数量
					有两个参数控制可调度到节点的 pod 数量上限,分别为 podsPerCore 和 maxPods。如果您同时使用这两个选项,则取两者中较小的限制来限制节点上的 pod 数。
				
					例如,如果将一个有 4 个处理器内核的节点上的 podsPerCore 设置为 10,则该节点上允许的 pod 数量上限为 40。
				
先决条件
- 输入以下命令为您要配置的节点类型获取与静态 - MachineConfigPoolCRD 关联的标签:- oc edit machineconfigpool <name> - $ oc edit machineconfigpool <name>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 例如: - oc edit machineconfigpool worker - $ oc edit machineconfigpool worker- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 标签会出现在 Labels 下。
 提示- 如果标签不存在,请添加键/值对,例如: - oc label machineconfigpool worker custom-kubelet=small-pods - $ oc label machineconfigpool worker custom-kubelet=small-pods- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
流程
- 为配置更改创建自定义资源 (CR)。 - max-podsCR 配置示例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注意- 将 - podsPerCore设置为- 0可禁用这个限制。- 在上例中, - podsPerCore的默认值为- 10,- maxPods的默认值则为- 250。这意味着,除非节点有 25 个以上的内核,否则- podsPerCore就是默认的限制因素。
- 运行以下命令来创建 CR: - oc create -f <file_name>.yaml - $ oc create -f <file_name>.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
验证
- 列出 - MachineConfigPoolCRD 以查看是否应用了更改。如果 Machine Config Controller 抓取到更改,则- UPDATING列会报告- True:- oc get machineconfigpools - $ oc get machineconfigpools- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - NAME CONFIG UPDATED UPDATING DEGRADED master master-9cc2c72f205e103bb534 False False False worker worker-8cecd1236b33ee3f8a5e False True False - NAME CONFIG UPDATED UPDATING DEGRADED master master-9cc2c72f205e103bb534 False False False worker worker-8cecd1236b33ee3f8a5e False True False- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 更改完成后, - UPDATED列会报告- True。- oc get machineconfigpools - $ oc get machineconfigpools- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - NAME CONFIG UPDATED UPDATING DEGRADED master master-9cc2c72f205e103bb534 False True False worker worker-8cecd1236b33ee3f8a5e True False False - NAME CONFIG UPDATED UPDATING DEGRADED master master-9cc2c72f205e103bb534 False True False worker worker-8cecd1236b33ee3f8a5e True False False- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow