问题
pod调度失败,显示某个节点 too many pod
查看节点可分配pod数量
kubectl describe no nodes #kubeadm 安装的k8s集群默认节点pod总数是110
Capacity:
.........
pods: 110
修改节点可容纳pod总数
#查看kubelet.service 的服务文件位置
[root@k8s ~]# systemctl status kubelet.service
● kubelet.service - Kubernetes Kubelet Server
Loaded: loaded (/etc/systemd/system/kubelet.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2023-02-17 14:36:02 CST; 2h 20min ago
....................
# 查看kubelet.service 的服务文件内容
cat /etc/systemd/system/kubelet.service
[Unit]
Description=Kubernetes Kubelet Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=docker.service
Wants=docker.socket
[Service]
User=root
EnvironmentFile=-/etc/kubernetes/kubelet.env #变量文件
ExecStartPre=-/bin/mkdir -p /data/lib/kubelet/volume-plugins
ExecStart=/usr/local/bin/kubelet \
$KUBE_LOGTOSTDERR \
$KUBE_LOG_LEVEL \
$KUBELET_API_SERVER \
$KUBELET_ADDRESS \
$KUBELET_PORT \
$KUBELET_HOSTNAME \
$KUBE_ALLOW_PRIV \
$KUBELET_ARGS \
$DOCKER_SOCKET \
$KUBELET_NETWORK_PLUGIN \
$KUBELET_VOLUME_PLUGIN \
$KUBELET_CLOUDPROVIDER
Restart=always
RestartSec=10s
[Install]
WantedBy=multi-user.target
#打开变量文件,添加变量
vim /etc/kubernetes/kubelet.env
# 追加一个表示pod总数的变量
MAX_PODS="--max-pods=500"
#还要修改kubelet服务文件
vim /etc/systemd/system/kubelet.service
[Unit]
Description=Kubernetes Kubelet Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=docker.service
Wants=docker.socket
[Service]
User=root
EnvironmentFile=-/etc/kubernetes/kubelet.env #变量文件
ExecStartPre=-/bin/mkdir -p /data/lib/kubelet/volume-plugins
ExecStart=/usr/local/bin/kubelet \
$KUBE_LOGTOSTDERR \
$KUBE_LOG_LEVEL \
$KUBELET_API_SERVER \
$KUBELET_ADDRESS \
$KUBELET_PORT \
$KUBELET_HOSTNAME \
$KUBE_ALLOW_PRIV \
$KUBELET_ARGS \
$DOCKER_SOCKET \
$KUBELET_NETWORK_PLUGIN \
$KUBELET_VOLUME_PLUGIN \
$KUBELET_CLOUDPROVIDER \ #这个斜杠不用忘记加了
$MAX_PODS #加上刚才添加的pod数量变量
Restart=always
RestartSec=10s
[Install]
WantedBy=multi-user.target
重启kubelet服务,再次查看节点可容纳数量。
问题
集群中存在大量的pod处于Pending状态,查看kubectl describe pod xxxx查看,只有下面的信息,并没有too many pod 节点pod总数超出限制
类似的报错信息:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling 82s (x26 over 36m) default-scheduler 0/1 nodes are available: 1 Insufficient pods.
查看全部的pod:
[root@master01 ~]# kubectl get nodes -o yaml | grep pods
pods: "110"
pods: "110"
[root@master01 ~]# kubectl get pod -A | wc -l
145
可以判断也是pod数量过多导致的。按照上面的解决方法即可,也可以按照下面的方法修改:
在/etc/kubernetes/kubelet.env中增加fail-swap-on=false --max-pods=200
修改最大pod数
这样修改也可以:
vim /etc/kubernetes/kubelet-config.yaml
systemctl restart kubelet.service
修改最大pod数
不同的k8s版本,可以添加的位置有所不一样,因为kubelet.service文件写的不一样,根据其kubelet.service文件判断应该在哪里加:
vim /etc/sysconfig/kubelet
systemctl restart kubelet