Kubelet配置调优:如何快速解决K8s节点"Too many pods"问题

环境为 ARM架构 + KylinV10系统 + Kubernetes 1.30.1

当创建Pod的时候,发现大量的Pod无法在Node上运行,出现Pending状态

配置调整步骤优化

test          nginx-1-5759675f65-z4jg8                     0/1     Pending   0          7h14m
test          nginx-1-5759675f65-z62jf                     0/1     Pending   0          7h14m
test          nginx-1-5759675f65-z8gs9                     0/1     Pending   0          7h14m
test          nginx-1-5759675f65-zb4sk                     0/1     Pending   0          7h14m
test          nginx-1-5759675f65-zbqb4                     0/1     Pending   0          7h14m
test          nginx-1-5759675f65-zfkv6                     0/1     Pending   0          7h14m
test          nginx-1-5759675f65-zhmgc                     0/1     Pending   0          7h14m
test          nginx-1-5759675f65-zrxqf                     0/1     Pending   0          7h14m
test          nginx-1-5759675f65-zxxq8                     0/1     Pending   0          7h14m

查看事件

[root@arm-k8s ~]# kubectl describe pods -n test nginx-1-5759675f65-zxxq8 | grep -A1000 Events
Events:
  Type     Reason            Age                  From               Message
  ----     ------            ----                 ----               -------
  Warning  FailedScheduling  18m (x83 over 7h9m)  default-scheduler  0/1 nodes are available: 1 Too many pods. preemption: 0/1 nodes are available: 1 No preemption victims found for incoming pod.

发现是由于Node默认允许的Pod数量是有限制的,配置kubelet配置文件,增加Node运行Pod数量

[root@arm-k8s ~]# systemctl status kubelet.service 
● kubelet.service - Kubernetes Kubelet
   Loaded: loaded (/etc/systemd/system/kubelet.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2025-04-05 20:11:12 CST; 9h ago
     Docs: https://github.com/GoogleCloudPlatform/kubernetes
 Main PID: 29870 (kubelet)
    Tasks: 22
   Memory: 133.4M
   CGroup: /system.slice/kubelet.service  #得到配置文件存放在/var/liib/kubelet下
           └─29870 /opt/kube/bin/kubelet --config=/var/lib/kubelet/config.yaml --container-runtime-endpoint=unix:///run/containerd/containerd.sock --hostna>
[root@arm-k8s ~]# vim /var/lib/kubelet/config.yaml
maxPods: 500
#默认是110  调整为合适数量,我这设置为500

重启kubelet(这里不会影响到已经运行的Pod)

[root@arm-k8s ~]# sudo systemctl daemon-reload   
[root@arm-k8s ~]# sudo systemctl restart kubelet

查看是否还有非Running的

[root@arm-k8s ~]# kubectl get pods -A | grep -v Running
NAMESPACE     NAME                                         READY   STATUS    RESTARTS      AGE
#已经没有了