本页面介绍了 Anthos Clusters on Bare Metal 1.12 版的 Google Cloud 项目、集群和节点的配额和限制。
限制
请注意集群的以下限制和建议。
每个集群的 pod 数上限
我们建议您将每个集群的 pod 数量限制为 15,000 个以内。例如,如果您的集群有 200 个节点,则应将每个节点的 pod 数限制为 75 个以内。同样,如果您希望每个节点运行 110 个 pod,则应将集群中的节点数限制为 136 个以内。下表提供了建议和不建议的配置示例。
每个节点的 Pod 数。 | 每个集群的节点数 | 每个集群的 Pod 数 | 结果 |
---|---|---|---|
110 | 200 | 22,000 | pod 过多,不建议 |
110 | 136 | 14,960 | 在限制范围内 |
100 | 150 | 15000 | 在限制范围内 |
75 | 200 | 15000 | 在限制范围内 |
以下各部分中每个集群的 pod 数上限建议优先于每个节点的 pod 数和每个集群的节点数建议。
每个集群的节点数上限
我们测试 Anthos Clusters on Bare Metal,以运行具有多达 500 个节点的工作负载。不过,为了确保最佳的性能和可靠性,我们建议您在生产环境中运行工作负载时每个集群不超过 200 个节点。
集群类型 | 节点数下限 | 建议的节点数上限 | 绝对节点数上限 |
---|---|---|---|
用户、独立或混合 | 1 | 200 | 500 |
对于单节点集群,您必须移除 node-role.kubernetes.io/master:NoSchedule
污点才能在节点上运行工作负载。如需了解详情,请参阅 Kubernetes 污点和容忍。
每个节点的 pod 数上限
Anthos Clusters on Bare Metal 支持在集群配置文件的 nodeConfig.PodDensity.MaxPodsPerNode
设置中配置每个节点的 pod 数上限。下表展示了 MaxPodsPerNode
支持的最小值和最大值,其中包括运行插件服务的 pod:
集群类型 | 允许的最小值 | 建议的最大值 | 允许的最大值 |
---|---|---|---|
所有 HA 集群和非 HA 用户集群 | 32 | 110 | 250 |
所有其他非 HA 集群 | 64 | 110 | 250 |
端点数上限
在 RHEL 和 CentOS 中,存在 100,000 个端点的集群级限制。此数字是一个 Kubernetes 服务引用的所有 pod 的总和。如果两个服务引用同一组 pod,则此情况计为两组单独的端点。RHEL 和 CentOS 中的底层 nftable
实现导致了此限制;这不是 Anthos Clusters on Bare Metal 的固有限制。
应对措施
对于 RHEL 和 CentOS,没有缓解措施。对于 Ubuntu 和 Debian 系统,我们建议在大规模集群上从默认 iptables
切换为旧版 iptables
。
Dataplane V2 eBPF 限制
BPF lbmap 中 Dataplane V2 的条目数上限为 65,536。以下方面的增加可能会导致条目总数增加:
- 服务数
- 每项服务的端口数
- 每项服务的后端数
我们建议您监控集群使用的实际条目数,以确保不超出限制。使用以下命令获取当前条目:
kubectl get po -n kube-system -l k8s-app=cilium | cut -d " " -f1 | grep anetd | head -n1 | \
xargs -I % kubectl -n kube-system exec % -- cilium bpf lb list | wc -l
我们还建议您使用自己的监控流水线从 anetd
DaemonSet 中收集指标。监控以下条件以确定条目数何时导致问题:
cilium_bpf_map_ops_total{map_name="lb4_services_v2",operation="update",outcome="fail" } > 0
cilium_bpf_map_ops_total{map_name="lb4_backends_v2",operation="update",outcome="fail" } > 0
LoadBalancer 和 NodePort Service 端口限制
LoadBalancer 和 NodePort Service 的端口限制为 2,768。默认端口范围为 30000-32767。如果超出限制,则您无法创建新的 LoadBalancer 或 NodePort Service,也无法为现有服务添加新的节点端口。
使用以下命令检查当前分配的端口数:
kubectl get svc -A | grep : | tr -s ' ' | cut -d ' ' -f6 | tr ',' '\n' | wc -l
捆绑式负载均衡器节点连接限制
用于捆绑式负载均衡 (MetalLB) 的每个节点允许的连接数为 28,000。这些连接的默认临时端口范围为 32768-60999。如果超出连接限制,则对 LoadBalancer Service 的请求可能会失败。
如果您需要公开能够处理大量连接(例如针对 Ingress)的负载均衡器服务,我们建议您考虑替代负载均衡方法,以避开 MetalLB 存在的此限制。
集群配额
默认情况下,您最多可以注册 15 个集群。如需在 GKE Hub 中注册更多集群,您可以在 Google Cloud 控制台中提交增加配额申请:
找不到您要查询的内容?点击发送反馈,告诉我们缺少哪些内容。