【问题标题】:Increasing the maxPods of a k8s node增加一个 k8s 节点的 maxPods
【发布时间】:2020-11-20 14:29:31
【问题描述】:

我正在尝试动态增加 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


    【解决方案1】:

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

    根据需要在 /var/lib/kubelet/config.yaml 上更新/添加 maxPods 字段并在工作节点上重新启动 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
    

    现在应该在 kubelet 重启后更改验证 pods 值

    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
    

    【讨论】:

    • 我应该说我正在使用 Azure Kubernetes 服务,它默认为 30 个 pod,Vanilla k8s 默认为 100。你这样做的方式会起作用,但我希望有一个我所有的 configmap节点将使用,因此当我扩展节点时,它们将获取新的配置映射。但是修改 kubelet 命令行 args 绝对是一种选择。
    【解决方案2】:

    如果在创建新节点池时未指定 maxPods,则会收到 Azure CNI 的默认值 30

    您可以在集群部署时或添加新节点池时配置每个节点的最大 pod 数。如果使用 Azure CLI 或资源管理器模板进行部署,则可以将每个节点的最大 pod 值设置为高达 250。

    您可以通过 Azure CLI 进行更改 - 在使用 az aks create 命令部署集群时指定 --max-pods 参数。最大值为 250。

    使用 Azure 门户部署集群时,您无法更改每个节点的最大 pod 数。

    请在此处阅读如何更改现有集群中的值

    Reference Doc

    【讨论】:

    • 感谢您的链接。这正是我想要的。加油!
    猜你喜欢
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-25
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多