k8s 调整Node节点 Max_Pods
默认情况下,Kubernetes集群中一个Node最多能起110个Pod。
这是基于性能和资源管理的考虑,以确保Kubernetes集群的稳定性和可靠性。
查看kht125节点上支持的最大pod数量:
kubectl describe node kht125 | grep -i “Capacity|Allocatable” -A 6
调整Node节点Max_Pods
的方法如下:
- 查看节点上kubelet启动时用的配置文件:使用
systemctl status kubelet -l
命令查看。 - 修改配置文件:找到kubelet的配置文件,通常为
/var/lib/kubelet/config.yaml
。如果文件中存在maxPods
参数,则将其修改为所需的值;如果没有此参数,则直接添加,例如maxPods: 120
,注意要顶格,前面不要有空格。 - 重启修改Pod数量的节点上的kubelet服务:使用
systemctl restart kubelet
命令重启。在master节点上用kubectl get nodes
查看该节点的状态,若为Ready
则表示成功;如果是NotReady
,可等一会或者查看kubelet日志以确定是否启动成功。也可以使用kubectl describe node
查看输出结果里的Pods
参数是否已变成修改后的值。
当Pod数量达到节点上限时,可以采取以下具体操作:
- 增加节点数量:在节点页面查看容器组、CPU、内存的使用情况,确定集群的资源使用率,根据Pod声明的亲和性策略在集群中添加新的节点。例如,使用云服务提供商的相关接口或命令行工具创建新的节点并加入集群。
- 调整资源分配:检查Pod资源配额设置,对于资源设置不合理的Pod,适当调整其CPU、内存等资源请求和限制,以释放一些节点资源,让新的Pod能够调度到该节点上。
- 优化Pod分布:检查Pod的分布情况,看是否存在某些节点上Pod分布过于密集,而其他节点资源利用率较低的情况。可以通过调整Pod的调度策略,如使用节点亲和性、反亲和性等,将Pod分散到其他资源充足的节点上。
- 删除不必要的Pod:如果有一些不重要或暂时不需要的Pod正在运行,可以考虑删除它们,以腾出空间来调度新的Pod。但在删除Pod时,需要确保不会影响到业务的正常运行。
###########################################
Kubernetes集群中一个Node默认最多能起110个Pod,但你看到大于110甚至是254的情况,可能有以下原因:
- 网络插件影响:不同的网络插件对Node节点上Pod数量的限制有所不同。例如,在Flannel网络模式下,单节点默认支持的最大Pod数为256,扣除flannel、docker0占用的2个IP,实际最多可运行254个Pod。这是因为Flannel配置的本节点Pod网段是/24,提供了256个IP地址,而其中2个被保留。
- 集群类型差异:某些特定的集群类型或发行版可能会对默认的Pod数量限制进行调整。比如OpenShift集群,在默认配置下,每个Node节点最多可以有254个Pod。这是因为OpenShift SDN按照RFC1918分配/16私有子网空间(默认10.1.0.0/16)作为集群网络,为每个Node节点分配/24大小的IP地址空间给Node节点上的Pods,扣除网关地址和广播地址,每个Node节点最多可容纳254个Pod。
- 手动配置修改:通过修改kubelet的配置参数
--max-pods
,可以调整Node节点上允许运行的最大Pod数量。如果管理员根据实际业务需求和节点资源情况,将--max-pods
参数设置为大于110的值,那么该节点就能运行更多的Pod。