首页 > 解决方案 > 增加一个 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。

我错过了什么?任何帮助将不胜感激

谢谢,

杰瑞

标签: kubernetes

解决方案


每个节点的默认 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

推荐阅读