Faça a gestão dos node pools

Um node pool é um grupo de nós num cluster do Kubernetes que têm todos a mesma configuração. Os node pools usam uma especificação NodePool. Cada nó no conjunto tem uma etiqueta de nó do Kubernetes, que tem o nome do conjunto de nós como valor. Por predefinição, todos os novos conjuntos de nós executam a mesma versão do Kubernetes que o plano de controlo.

Quando cria um cluster do Kubernetes, o número de nós e o tipo de nós que especificar criam o primeiro node pool do cluster. Pode adicionar pools de nós adicionais de diferentes tamanhos e tipos ao seu cluster. Todos os nós em qualquer conjunto de nós são idênticos entre si.

Os conjuntos de nós personalizados são úteis quando agenda pods que requerem mais recursos do que outros, como mais memória ou espaço no disco local. Pode usar taints de nós se precisar de mais controlo sobre o agendamento dos pods.

Pode criar e eliminar node pools individualmente sem afetar todo o cluster. Não pode configurar um único nó num conjunto de nós. Todas as alterações de configuração afetam todos os nós no conjunto de nós.

Pode redimensionar os conjuntos de nós num cluster aumentando ou diminuindo a escala do conjunto. A redução de escala de um conjunto de nós é um processo automatizado em que diminui o tamanho do conjunto e o sistema GDC esgota e remove automaticamente um nó arbitrário. Não pode selecionar um nó específico para remover quando reduz o tamanho de um conjunto de nós.

Antes de começar

Para ver e gerir node pools num cluster do Kubernetes, tem de ter as seguintes funções:

  • Administrador do cluster de utilizadores (user-cluster-admin)
  • Visualizador de nós de cluster de utilizadores (user-cluster-node-viewer)

Estas funções não estão associadas a um espaço de nomes.

Adicione um node pool

Quando cria um cluster do Kubernetes a partir da consola do GDC, pode personalizar o node pool predefinido e criar node pools adicionais antes de a criação do cluster ser inicializada. Se tiver de adicionar um conjunto de nós a um cluster do Kubernetes existente, conclua os seguintes passos:

Consola

  1. No menu de navegação, selecione Kubernetes Engine > Clusters.
  2. Clique no cluster na lista de clusters. É apresentada a página Detalhes do cluster.
  3. Selecione Conjuntos de nós > Adicionar conjunto de nós.
  4. Atribua um nome ao conjunto de nós. Não pode modificar o nome depois de criar o conjunto de nós.
  5. Especifique o número de nós de trabalho a criar no node pool.
  6. Selecione a classe de máquinas mais adequada aos requisitos da sua carga de trabalho. As classes de máquinas são apresentadas nas seguintes definições:
    • Tipo de máquina
    • vCPU
    • Memória
  7. Clique em Guardar.

API

  1. Abra a especificação do recurso personalizado Cluster com a CLI kubectl através do editor interativo:

    kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME -n platform \
        --kubeconfig MANAGEMENT_API_SERVER
    

    Substitua o seguinte:

    • KUBERNETES_CLUSTER_NAME: o nome do cluster.
    • MANAGEMENT_API_SERVER: o caminho kubeconfig do servidor da API zonal onde o cluster Kubernetes está alojado. Se ainda não gerou um ficheiro kubeconfig para o servidor da API na zona segmentada, consulte Iniciar sessão para ver detalhes.
  2. Adicione uma nova entrada na secção nodePools:

    nodePools:
    ...
    - machineTypeName: MACHINE_TYPE
      name: NODE_POOL_NAME
      nodeCount: NUMBER_OF_WORKER_NODES
      taints: TAINTS
      labels: LABELS
      acceleratorOptions:
        gpuPartitionScheme: GPU_PARTITION_SCHEME
    

    Substitua o seguinte:

    • MACHINE_TYPE: o tipo de máquina dos nós de trabalho do node pool. Veja os tipos de máquinas disponíveis para o que está disponível para configuração.
    • NODE_POOL_NAME: o nome do node pool.
    • NUMBER_OF_WORKER_NODES: o número de nós de trabalho a aprovisionar no conjunto de nós.
    • TAINTS: as contaminações a aplicar aos nós deste node pool. Este é um campo opcional.
    • LABELS: As etiquetas a aplicar aos nós deste node pool. Contém uma lista de pares de chave-valor. Este é um campo opcional.
    • GPU_PARTITION_SCHEME: O esquema de partição da GPU, se estiver a executar cargas de trabalho da GPU. Por exemplo, mixed-2. A GPU não é particionada se este campo não estiver definido. Para ver os perfis de GPU multi-instância (MIG) disponíveis, consulte os perfis de MIG suportados.
  3. Guarde o ficheiro e saia do editor.

Ver node pools

Para ver os conjuntos de nós existentes num cluster do Kubernetes, conclua os seguintes passos:

Consola

  1. No menu de navegação, selecione Kubernetes Engine > Clusters.
  2. Clique no cluster na lista de clusters. É apresentada a página Detalhes do cluster.
  3. Selecione Conjuntos de nós.

É apresentada a lista de node pools em execução no cluster. Pode gerir os conjuntos de nós do cluster a partir desta página.

API

  • Veja os node pools de um cluster do Kubernetes específico:

    kubectl get clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME -n platform \
        -o json --kubeconfig MANAGEMENT_API_SERVER | \
        jq .status.workerNodePoolStatuses
    

    O resultado é semelhante ao seguinte:

    [
      {
        "conditions": [
          {
            "lastTransitionTime": "2023-08-31T22:16:17Z",
            "message": "",
            "observedGeneration": 2,
            "reason": "NodepoolReady",
            "status": "True",
            "type": "Ready"
          },
          {
            "lastTransitionTime": "2023-08-31T22:16:17Z",
            "message": "",
            "observedGeneration": 2,
            "reason": "ReconciliationCompleted",
            "status": "False",
            "type": "Reconciling"
          }
        ],
        "name": "worker-node-pool",
        "readyNodes": 3,
        "readyTimestamp": "2023-08-31T18:59:46Z",
        "reconcilingNodes": 0,
        "stalledNodes": 0,
        "unknownNodes": 0
      }
    ]
    

Elimine um node pool

A eliminação de um node pool elimina os nós e os respetivos trajetos. Estes nós desalojam e reprogramam todos os pods em execução nos mesmos. Se os pods tiverem seletores de nós específicos, os pods podem permanecer numa condição não agendável se nenhum outro nó no cluster satisfizer os critérios.

Certifique-se de que tem, pelo menos, três nós de trabalho antes de eliminar um conjunto de nós para garantir que o cluster tem espaço de computação suficiente para ser executado de forma eficaz.

Para eliminar um conjunto de nós, conclua os seguintes passos:

Consola

  1. No menu de navegação, selecione Kubernetes Engine > Clusters.

  2. Clique no cluster que está a alojar o conjunto de nós que quer eliminar.

  3. Selecione Conjuntos de nós.

  4. Clique em Eliminar junto ao conjunto de nós que quer eliminar.

API

  1. Abra a especificação do recurso personalizado Cluster com a CLI kubectl através do editor interativo:

    kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME -n platform \
          --kubeconfig MANAGEMENT_API_SERVER
    

    Substitua o seguinte:

    • KUBERNETES_CLUSTER_NAME: o nome do cluster.
    • MANAGEMENT_API_SERVER: o caminho kubeconfig do servidor da API zonal onde o cluster Kubernetes está alojado. Se ainda não gerou um ficheiro kubeconfig para o servidor da API na zona segmentada, consulte Iniciar sessão para ver detalhes.
  2. Remova a entrada do node pool da secção nodePools. Por exemplo, no fragmento seguinte, tem de remover os campos machineTypeName, name e nodeCount:

    nodePools:
    ...
    - machineTypeName: n2-standard-2-gdc
      name: nodepool-1
      nodeCount: 3
    

    Certifique-se de que remove todos os campos do conjunto de nós que está a eliminar.

  3. Guarde o ficheiro e saia do editor.