kubernetes - 限制每个节点的 Pod 数量

标签 kubernetes kubectl kubeadm

我正在尝试限制集群中每个节点的 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 <node> -o yaml returns status.capacity.pods使用其默认值 (110)。
我该如何继续以使每个节点应用此 pod 限制?

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

谢谢!

最佳答案

/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 配置文件。

关于kubernetes - 限制每个节点的 Pod 数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60378117/

相关文章:

windows - 在 Windows 上使用 VirtualBox 为 Kubernetes 创建 Docker 容器

kubernetes - 在 debian stretch 上安装 Kubernetes(kubectl、kubeadm、kubelet)

mysql - 无法为 Pod 安装卷

kubernetes - GCE群集所有节点未就绪

kubernetes - 失败调度 : 0/3 nodes are available: 3 Insufficient pods

kubernetes - Calico:Kubernetes pod 使用集群 IP 无法互相 ping

kubernetes - Kubenetes : change hpa min-replica

kubernetes - CrashLoopBackOff - 退避重启失败的容器

docker - Kubernetes容器镜像从暂停状态不变:集群初始化后的2.1镜像

kubeadm 在裸机上构建 Kubernetes 集群