需修改kubelet配置文件并确保maxPods生效:先查config.yaml和启动参数,删除或覆盖--max-pods命令行参数,编辑/var/lib/kubelet/config.yaml添加或修改maxPods: 150(左对齐),重启kubelet后用kubectl describe node验证Allocatable.pods值。

需要将Kubernetes集群中某个Node节点支持的最大Pod数量从默认的110个提升到更高值,比如150或300,必须直接修改该节点上kubelet服务所加载的配置文件,否则调度器仍按旧限制分配Pod。
确认当前节点的maxPods实际生效值
在目标Node节点上执行:kubectl describe node $(hostname) | grep -A 2 -i "allocatable.*pods\|capacity.*pods"。输出中pods行显示的数字才是当前真正起效的上限,不是config.yaml里写了就一定生效——它可能被启动参数覆盖,也可能因配置未加载而失效。
同时运行cat /var/lib/kubelet/config.yaml 2>/dev/null | grep maxPods,查看配置文件里是否已存在该字段。如果返回空,说明当前完全依赖命令行参数;如果返回maxPods: 110,则需确认它是否被更高优先级的启动参数屏蔽。
定位并编辑kubelet主配置文件
先查清kubelet实际加载的配置路径:systemctl status kubelet -l | grep "config="。绝大多数kubeadm部署的集群会显示--config=/var/lib/kubelet/config.yaml,这是你要改的文件。
用vim打开:sudo vim /var/lib/kubelet/config.yaml。
在文件末尾顶格添加一行(注意:前面不能有任何空格或制表符,否则YAML解析失败):maxPods: 150。若该字段已存在但值过小,直接修改数值即可。
保存退出。这一步必须确保语法合法,YAML对缩进极其敏感——【maxPods必须独占一行且左对齐】。
验证配置加载方式并处理参数冲突
有些集群把--max-pods写在systemd启动参数里,会覆盖config.yaml中的设置。执行ps aux | grep kubelet | grep -o "--max-pods=[0-9]\+",如果有输出(如--max-pods=110),说明命令行参数正在生效,config.yaml里的maxPods会被忽略。
此时有两种方法:
方法一:删除命令行参数(推荐用于长期维护)
编辑/etc/systemd/system/kubelet.service.d/10-kubeadm.conf,找到包含--max-pods或KUBELET_NODE_MAX_PODS的Environment行,整行注释或删除。再执行sudo systemctl daemon-reload。
方法二:强制用参数覆盖配置(适合临时调试)
在同个10-kubeadm.conf文件中,添加新Environment:Environment="KUBELET_EXTRA_ARGS=--max-pods=150",并确保ExecStart=行末尾包含$KUBELET_EXTRA_ARGS。这样参数优先级高于config.yaml。
重启kubelet并验证结果
第一步:重载配置并重启服务:sudo systemctl daemon-reload && sudo systemctl restart kubelet。
第二步:等待10~20秒,让kubelet完成初始化和上报。期间节点状态可能短暂变为NotReady,属正常现象。
第三步:在Master节点执行kubectl get node $(ssh node-hostname hostname) -o wide,确认状态为Ready。
第四步:立即验证上限是否更新:kubectl describe node $(ssh node-hostname hostname) | grep -A 1 "Allocatable.*pods"。输出应显示pods: 150而非110。

















