kubernetes - 增加一个 k8s 节点的 maxPods
问题描述
我正在尝试动态增加 k8s 节点的 maxPods。目前它设置为 30,我想将其增加到 50。我按照以下说明操作:https ://kubernetes.io/docs/tasks/administer-cluster/reconfigure-kubelet/
在节点上我添加了--dynamic-config-dir
标志并重新启动kubelet
然后,我添加了一个 maxPods 设置为 50 的 configmap,并向节点添加了一个 configSource 部分:
configSource:
configMap:
name: my-node-name
namespace: kube-system
kubeletConfigKey: kubelet
我可以通过以下方式验证 configmap 是否已应用:
kubectl get no ${NODE_NAME} -o json | jq '.status.config'
{
"active": {
"configMap": {
"kubeletConfigKey": "kubelet",
"name": "my-node-config-c87h9fm782",
"namespace": "kube-system",
"resourceVersion": "54483288",
"uid": "144bd26f-d290-11ea-bb9d-5e7d8d22eed0"
}
},
"assigned": {
"configMap": {
"kubeletConfigKey": "kubelet",
"name": "my-node-config-c87h9fm782",
"namespace": "kube-system",
"resourceVersion": "54483288",
"uid": "144bd26f-d290-11ea-bb9d-5e7d8d22eed0"
}
},
"lastKnownGood": {
"configMap": {
"kubeletConfigKey": "kubelet",
"name": "my-node-config-c87h9fm782",
"namespace": "kube-system",
"resourceVersion": "54483288",
"uid": "144bd26f-d290-11ea-bb9d-5e7d8d22eed0"
}
}
}
但是该节点仍然只运行 30 个 Pod,并且任何部署另一个 Pod 的尝试都会失败,Pod 处于 Pending 状态。
我拉下 configmap 并验证 maxPods 设置为 50。
我错过了什么?任何帮助将不胜感激
谢谢,
杰瑞
解决方案
每个节点的默认 Max POD 值为 110
ubuntu@k8s-master-1:~$ kubectl describe nodes k8s-worker-1 | grep -i "Capacity\|Allocatable" -A 6
Capacity:
cpu: 2
ephemeral-storage: 12131484Ki
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 4046184Ki
pods: 110
Allocatable:
cpu: 2
ephemeral-storage: 11180375636
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 3943784Ki
pods: 110
在工作节点上查找 kubelet 的配置文件路径
ubuntu@k8s-worker-1:~$ ps -ef | grep -i kubelet
ubuntu 5077 5005 0 20:07 pts/0 00:00:00 grep --color=auto -i kubelet
root 23930 1 1 06:42 ? 00:15:18 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config.yaml --cgroup-driver=systemd --network-plugin=cni --pod-infra-container-image=k8s.gcr.io/pause:3.2
根据需要更新/添加 maxPods 字段/var/lib/kubelet/config.yaml
并在工作节点上重新启动 kubelet
ubuntu@k8s-worker-1:~$ sudo cat /var/lib/kubelet/config.yaml
apiVersion: kubelet.config.k8s.io/v1beta1
authentication:
anonymous:
enabled: false
webhook:
cacheTTL: 0s
enabled: true
x509:
clientCAFile: /etc/kubernetes/pki/ca.crt
authorization:
mode: Webhook
webhook:
cacheAuthorizedTTL: 0s
cacheUnauthorizedTTL: 0s
clusterDNS:
- 10.96.0.10
clusterDomain: cluster.local
cpuManagerReconcilePeriod: 0s
evictionPressureTransitionPeriod: 0s
fileCheckFrequency: 0s
healthzBindAddress: 127.0.0.1
healthzPort: 10248
httpCheckFrequency: 0s
imageMinimumGCAge: 0s
kind: KubeletConfiguration
nodeStatusReportFrequency: 0s
nodeStatusUpdateFrequency: 0s
rotateCertificates: true
runtimeRequestTimeout: 0s
staticPodPath: /etc/kubernetes/manifests
streamingConnectionIdleTimeout: 0s
syncFrequency: 0s
volumeStatsAggPeriod: 0s
maxPods: 500
验证 pods 值现在应该在 kubelet 重新启动后更改。
ubuntu@k8s-master-1:~$ kubectl describe nodes k8s-worker-1 | grep -i "Capacity\|Allocatable" -A 6
Capacity:
cpu: 2
ephemeral-storage: 12131484Ki
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 4046184Ki
pods: 500
Allocatable:
cpu: 2
ephemeral-storage: 12131484Ki
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 3943784Ki
pods: 500
推荐阅读
- python - 如何将 Python 代码编译成共享库以在 C# 应用程序(如 Unity)中使用?
- .net - Travis CI:面向 .NET Core、.NET Framework 和 .NET Standard
- javascript - 如何设置等于窗口 URL 的变量?
- c - 我制作了两个代码,但我无法解释为什么这两个代码不同并产生不同的结果
- python - 熊猫合并确实错过了价值;匹配行
- parallel-processing - 如果循环中涉及的所有张量都在 GPU 上,我的 for 循环是否并行运行?
- python - 无法计算列中唯一值的频率
- bash - AWK 中的嵌套数据过滤
- nginx - centos7上nuxt的nginx配置
- node.js - 如何在全局级别运行 npm 脚本,在所有节点项目上强制执行