Substituir a densidade de pods em um pool de nós

É possível configurar a densidade de pods para pools de nós individuais para substituir a configuração de todo o cluster, o que ajuda a melhorar a eficiência dos recursos. Esse recurso é útil para pools de nós especializados, como nós com GPUs, em que os requisitos de carga de trabalho ou a alocação eficiente de endereços IP exigem um valor diferente para o máximo de pods por nó.

Antes de começar

A capacidade de especificar a densidade de pods para pools de nós está disponível apenas para clusters com uma das seguintes configurações de rede:

Configurar a densidade de pods para um pool de nós

Configure a densidade de pods na especificação NodePool para substituir as configurações no nível do cluster. Essa configuração é opcional. O sistema deriva o tamanho do intervalo CIDR atribuído ao nó do parâmetro de pods máximos por nó.

A configuração maxPodsPerNode é imutável após a criação do pool de nós. O sistema valida a configuração maxPodsPerNode para garantir endereços IP suficientes para nós no pool de nós. Essa validação usa vinculação de rótulo estrita, em que um ClusterCIDRConfig se vincula a um pool de nós usando um seletor de nós. É possível pular essa validação definindo a anotação baremetal.cluster.gke.io/skip-pod-cidr-size-check na CR do cluster ou no nível do NodePool.

  1. Criar um recurso ClusterCIDRConfig.

    Esse recurso se vincula a um NodePool específico usando um seletor de nós.

    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)
    

    Substitua NODE_POOL_NAME pelo nome do NodePool.

  2. Crie o pool de nós com a densidade de pods modificada.

    Especifique o campo nodeConfigOverride na definição do NodePool. Esse campo contém a configuração 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. ...
    

    Substitua:

    • NODEPOOL_NAME: o nome do recurso do pool de nós em que você está substituindo o valor máximo de pods por nó.

    • CLUSTER_NAMESPACE: o namespace do cluster em que o pool de nós está localizado.

    • CLUSTER_NAME: o nome do cluster em que você substitui as configurações do pool de nós.

    • MAX_PODS_PER_NODE: o número máximo de pods que podem ser executados em um único nó no pool de nós especificado.

A seguir