我正忙着设置新的 k8s 集群。
我正在使用 rke 和 --max-pods: 200
kubelet: # https://rancher.com/docs/rke/latest/en/config-options/services/services-extras/#extra-args
extra_args:
- max-pods: 200 # https://forums.rancher.com/t/solved-setting-max-pods/11866/5
如何检查运行节点是否已使用正确的设置创建。
答案1
以下命令将返回的最大 pod 值<node_name>
:
kubectl get node <node_name> -ojsonpath='{.status.capacity.pods}'
编辑:修复了我的命令中的拼写错误,感谢@Shtlzut。
答案2
Kubernetes 文档内部构建大型集群我们可以看到 v1.17 支持:
Kubernetes 支持最多 5000 个节点的集群。更具体地说,我们支持满足以下条件的配置: 全部 符合以下标准:
- 不超过5000个节点
- Pod 总数不超过 150000 个
- 总容器数不超过 300000 个
- 每个节点不超过 100 个 Pod
在 GKE 内部,每个节点的 pod 数量的硬性限制是110
由于可用地址所致。
每个节点默认最多可容纳 110 个 Pod,Kubernetes 会为每个节点分配一个 /24 CIDR 块(256 个地址)。Kubernetes 的可用 IP 地址数量大约是节点上可创建的 Pod 数量的两倍,因此 Kubernetes 能够在节点上添加和删除 Pod 时减少 IP 地址重用。
这在优化 IP 地址分配和配额和限制。
或设置最大 podRancher
这里是一个解决方案[已解决] 设置最大 Pod 数量。
还有关于增加每个节点的最大 Pod 数量
... 鉴于机器规格、工作负载和环境的巨大差异,使用单个数字(最大 pod 数)可能会误导用户。如果我们有一个节点基准,我们就可以让用户分析他们的节点并决定最适合他们的配置。基准可以作为节点 e2e 测试存在,也可以存在于 contrib 存储库中。
我希望这能提供更多关于极限的信息。
答案3
我发现这是最好的方法
kubectl get nodes -A
NAME STATUS ROLES AGE VERSION
192.168.1.1 Ready controlplane,etcd,worker 9d v1.17.2
192.168.1.2 Ready controlplane,etcd,worker 9d v1.17.2
kubectl describe nodes 192.168.1.1 | grep -i pods
Capacity:
cpu: 16
ephemeral-storage: 55844040Ki
hugepages-2Mi: 0
memory: 98985412Ki
pods: 110
Allocatable:
cpu: 16
ephemeral-storage: 51465867179
hugepages-2Mi: 0
memory: 98883012Ki
pods: 110
答案4
- kubelet 每个节点的默认最大 pod 数量为 110。
- Kuberentes 最佳实践是每个节点 100 个 pod
- Openshift 将默认值设置为每个节点 250 个 pod,并且已测试每个节点 500 个 pod。
- EKS 指出,它受到 pod 可以使用的 IP 数量的限制。Azure CNI 有一些限制。默认节点 pod cidr 为 /24,即 256 以下。
请参阅此处的表格 https://www.stackrox.com/post/2020/02/eks-vs-gke-vs-aks/ 和https://learnk8s.io/kubernetes-node-size#:~:text=Most%20managed%20Kubernetes%20services%20even,of%20the%20type%20of%20node。
大多数托管的 Kubernetes 服务甚至对每个节点的 Pod 数量施加了严格限制:
在 Amazon Elastic Kubernetes Service (EKS) 上,每个节点的最大 Pod 数量取决于节点类型,范围从 4 到 737。在 Google Kubernetes Engine (GKE) 上,无论节点类型如何,每个节点的限制都是 100 个 Pod。在 Azure Kubernetes Service (AKS) 上,默认限制是每个节点 30 个 Pod,但可以增加到 250 个。