本文档介绍了如何为集群中的各个节点池指定 Pod 密度,以替换集群范围设置。虽然节点级配置通常会应用于整个集群,但您可以在特定节点池上配置 Pod 密度。替换特定节点池的 Pod 密度可以提高资源效率。此功能对于专用节点池(例如具有 GPU 的节点)非常有用,因为在这些节点池中,特定的工作负载要求或高效的 IP 地址分配使您必须为每个节点的 Pod 数上限设置不同的值。
替换集群范围 Pod 密度设置的功能适用于 1.33 版及更高版本的集群。
准备工作
为节点池指定 Pod 密度的功能仅适用于采用以下网络配置之一的集群:
为节点池配置 Pod 密度
在 NodePool
规范中配置 Pod 密度,以替换集群级设置。此配置是可选的。系统会根据“每个节点的 Pod 数上限”参数推导出分配给节点的 CIDR 范围的大小。
创建节点池后,maxPodsPerNode
配置将不可变。系统会验证 maxPodsPerNode
设置,以确保节点池中的节点有足够的 IP 地址。此验证使用严格的标签绑定,其中 ClusterCIDRConfig
通过节点选择器绑定到节点池。您可以通过在 Cluster CR 或 NodePool 级别设置 baremetal.cluster.gke.io/skip-pod-cidr-size-check
注解来跳过此验证。
创建
ClusterCIDRConfig
资源此资源使用节点选择器绑定到特定 NodePool。
apiVersion: networking.gke.io/v1alpha1 kind: ClusterCIDRConfig metadata: name: my-nodepool-cidr-config spec: nodeSelector: matchLabels: baremetal.cluster.gke.io/node-pool: NODE_POOL_NAME # ... other CIDR config fields (e.g., podCIDR, perNodeMaskSize)
将
NODE_POOL_NAME
替换为您的 NodePool 的名称。创建具有替换后的 Pod 密度的节点池。
在 NodePool 定义中指定
nodeConfigOverride
字段。此字段包含podDensity
配置。apiVersion: baremetal.cluster.gke.io/v1 kind: NodePool metadata: name: NODEPOOL_NAME namespace: CLUSTER_NAMESPACE spec: cluster: CLUSTER_NAME nodeConfigOverride: podDensity: maxPodsPerNode: MAX_PODS_PER_NODE # ... other NodePoolSpec fields like nodeCount, taints, labels etc. ...
替换以下内容:
NODEPOOL_NAME
:要替换其每个节点的 Pod 数上限值的节点池资源的名称。CLUSTER_NAMESPACE
:节点池所在的集群的命名空间。CLUSTER_NAME
:要替换节点池设置的集群的名称。MAX_PODS_PER_NODE
:可以在指定节点池中的单个节点上运行的 Pod 数上限。
后续步骤
- 了解平面模式与孤岛模式网络模型之间的区别。
- 了解如何实现平面 IPv4 模式网络模型。
- 了解如何创建使用 IPv4/IPv6 双栈网络的集群。
- 了解捆绑的 NVIDIA GPU Operator。
- 了解 Pod CIDR 地址块、节点数量和 Pod 密度之间的相关性。