替换节点池的 Pod 密度

本文档介绍了如何为集群中的各个节点池指定 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 注解来跳过此验证。

  1. 创建 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 的名称。

  2. 创建具有替换后的 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 数上限。

后续步骤