【问题标题】:Limit the number of pods per node限制每个节点的 pod 数量
【发布时间】:2020-06-08 05:06:45
【问题描述】:

我正在尝试限制集群中每个节点的 pod 数量。 我设法使用配置文件从 kubeadm init 添加了每个节点的全局限制:

apiVersion: kubeadm.k8s.io/v1beta1
kind: ClusterConfiguration
networking:
  podSubnet: <subnet>
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
maxPods: 10

这不太好,因为即使在主节点上也应用了限制(其中多个 kube-system pod 正在运行,并且此处的 pod 数量可能会增加到 10 个以上)。 我想在 init 处保留默认值,并在每个节点上更改 join 处的值。 我发现了一些东西:

apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
maxPods: 10
---
apiVersion: kubeadm.k8s.io/v1beta1
kind: JoinConfiguration
discovery:
  bootstrapToken:
    apiServerEndpoint: "<api_endpoint>"
    token: "<token>"
    unsafeSkipCAVerification: true

但是,即使没有出现错误/警告,似乎 maxPods 的值也被忽略了。我可以为该特定节点创建 10 多个 pod。 还有 kubectl get node &lt;node&gt; -o yaml returns status.capacity.pods 及其默认值 (110)。 我如何才能继续为每个节点应用此 pod 限制?

我想提一下,我对 Kubernetes 有基本/有限的知识。

谢谢!

【问题讨论】:

    标签: kubernetes kubectl kubeadm


    【解决方案1】:

    /var/lib/kubelet 有一个 config.yaml 文件。该配置文件是在运行 kubeadm join 时从 kube-system 命名空间中的 kubelet 配置映射生成的。文件的部分内容如下。

    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
    maxPods: 10
    

    您可以更改该文件并添加 maxPods 参数,然后在节点上重新启动 kubelet。

    sudo systemctl restart kubelet 
    

    目前在 kubeadm join 中没有办法传递 kubelet 配置文件。

    【讨论】:

      【解决方案2】:

      您还可以使用 kubelet --max-pods 选项设置每个节点的最大 pod 数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-09
        • 1970-01-01
        • 2021-04-14
        • 1970-01-01
        • 2015-10-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多