ノードプールの Pod 密度をオーバーライドする

このドキュメントでは、クラスタ全体の設定をオーバーライドして、クラスタ内の個々のノードプールの Pod 密度を指定する方法について説明します。通常、ノードレベルの構成はクラスタ全体に適用されますが、Pod 密度は特定のノードプールで構成できます。特定のノードプールの Pod 密度をオーバーライドすると、リソース効率を向上させることができます。この機能は、GPU を搭載したノードなど、特定のワークロード要件や効率的な IP アドレス割り振りにより、ノードあたりの最大 Pod 数に異なる値が必要となる特殊なノードプールに役立ちます。

クラスタ全体の Pod 密度設定をオーバーライドする機能は、バージョン 1.33 以降のクラスタで使用できます。

始める前に

ノードプールの Pod 密度を指定できるのは、次のいずれかのネットワーク構成のクラスタのみです。

ノードプールの Pod 密度を構成する

NodePool 仕様内で Pod 密度を構成して、クラスタレベルの設定をオーバーライドします。この構成は省略可能です。ノードに割り当てられる CIDR 範囲のサイズは、「ノードあたりの Pod の最大数」パラメータから導出されます。

ノードプールの作成後は 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: ノードプールが存在するクラスタの Namespace。

    • CLUSTER_NAME: ノードプールの設定をオーバーライドするクラスタの名前。

    • MAX_PODS_PER_NODE: 指定されたノードプールの単一ノードで実行できる Pod の最大数。

次のステップ