Faça a gestão dos node pools

Quando cria um cluster do Kubernetes isolado do ar do Google Distributed Cloud (GDC), o número de nós e o tipo de nós que especificar criam o primeiro conjunto de nós do cluster. Pode realizar as seguintes tarefas do conjunto de nós para um cluster existente à medida que os respetivos requisitos de computação mudam:

  • Adicione um novo conjunto de nós: adicione novos conjuntos de nós à medida que a procura das cargas de trabalho do cluster aumenta.

  • Ver um conjunto de nós: veja as caraterísticas e o estado dos seus conjuntos de nós existentes.

  • Redimensione um conjunto de nós: aumente ou diminua manualmente a escala dos seus conjuntos de nós para se adaptar às flutuações do tráfego de carga de trabalho.

  • Eliminar um node pool: remova node pools se a procura das cargas de trabalho do cluster diminuir ou se quiser eliminar tipos de máquinas que já não são prudentes para as operações de contentores.

Para mais informações sobre os conjuntos de nós num cluster, consulte o artigo Acerca dos nós.

Este documento destina-se a programadores de aplicações no grupo de operadores de aplicações e a administradores de TI no grupo de administradores da plataforma responsáveis pela gestão de clusters do Kubernetes na respetiva organização. Para mais informações, consulte a documentação sobre públicos-alvo para GDC com isolamento de ar.

Antes de começar

Para concluir as tarefas neste documento, tem de ter os seguintes recursos e funções:

  • Para ver e gerir node pools num cluster do Kubernetes partilhado, peça ao administrador de IAM da organização que lhe conceda 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.

  • Para ver e gerir node pools num cluster Kubernetes padrão, peça ao administrador de IAM da organização que lhe conceda a função de administrador do cluster padrão (standard-cluster-admin). Esta função está associada ao espaço de nomes do seu projeto.

  • Para executar comandos num cluster do Kubernetes, certifique-se de que tem os seguintes recursos:

    • Localize o nome do cluster do Kubernetes ou pergunte a um membro do grupo de administradores da plataforma qual é o nome do cluster.

    • Inicie sessão e gere o ficheiro kubeconfig para o cluster do Kubernetes, se não tiver um.

    • Use o caminho kubeconfig do cluster Kubernetes para substituir KUBERNETES_CLUSTER_KUBECONFIG nestas instruções.

Adicione um node pool

Para adicionar um node pool 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 KUBERNETES_CLUSTER_NAMESPACE \
        --kubeconfig MANAGEMENT_API_SERVER
    

    Substitua o seguinte:

    • KUBERNETES_CLUSTER_NAME: o nome do cluster.
    • KUBERNETES_CLUSTER_NAMESPACE: o espaço de nomes do cluster. Para clusters partilhados, use o espaço de nomes platform. Para clusters padrão, use o espaço de nomes do projeto 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 para os 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 node pool.
    • TAINTS: as restrições a aplicar aos nós deste node pool. Este é um campo opcional.
    • LABELS: as etiquetas a aplicar aos nós deste conjunto de nós. 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 KUBERNETES_CLUSTER_NAMESPACE \
        -o json --kubeconfig MANAGEMENT_API_SERVER | \
        jq .status.workerNodePoolStatuses
    

    Substitua o seguinte:

    • KUBERNETES_CLUSTER_NAME: o nome do cluster.
    • KUBERNETES_CLUSTER_NAMESPACE: o espaço de nomes do cluster. Para clusters partilhados, use o espaço de nomes platform. Para clusters padrão, use o espaço de nomes do projeto do cluster.

    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
      }
    ]
    

Redimensione node pools

Pode redimensionar manualmente os node pools num cluster do Kubernetes aumentando ou diminuindo a escala do pool. Não é possível selecionar um nó específico para remover quando reduz o tamanho de um conjunto de nós.

Para dimensionar um conjunto de nós num cluster existente, conclua os seguintes passos:

Consola

  1. No painel de controlo, selecione o projeto no qual existe o cluster que quer editar.
  2. No menu de navegação, selecione Kubernetes Engine > Clusters.
  3. Selecione o nome do cluster ao qual o conjunto de nós está associado. É apresentada a página Detalhes do cluster.
  4. Clique no separador Conjuntos de nós.
  5. Selecione o ícone Editar para o conjunto de nós que quer redimensionar. É apresentado o comando Editar node pool.
  6. Atualize o campo Número de nós para refletir a nova quantidade de nós necessários no node pool. Pode aumentar ou diminuir o número de nós para se adequar aos requisitos da sua carga de trabalho.

  7. Clique em Guardar.

  8. Navegue novamente para o separador Conjuntos de nós do cluster e confirme se o conjunto de nós redimensionado tem o estado Ready e o número correto de nós. A expansão do conjunto de nós para a sua especificação pode demorar alguns minutos.

    Confirme se o conjunto de nós está pronto através da consola.

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 KUBERNETES_CLUSTER_NAMESPACE \
        --kubeconfig MANAGEMENT_API_SERVER
    

    Substitua o seguinte:

    • KUBERNETES_CLUSTER_NAME: o nome do cluster que aloja o conjunto de nós.
    • KUBERNETES_CLUSTER_NAMESPACE: o espaço de nomes do cluster. Para clusters partilhados, use o espaço de nomes platform. Para clusters padrão, use o espaço de nomes do projeto do cluster.
    • MANAGEMENT_API_SERVER: o caminho kubeconfig do servidor da API zonal onde o cluster Kubernetes está alojado. Se não tiver gerado um ficheiro kubeconfig para o servidor da API na sua zona segmentada, consulte Recursos do servidor da API de gestão zonal.
  2. Atualize o campo nodeCount para o node pool a redimensionar:

    nodePools:
    # Several lines of code are omitted here.
    - machineTypeName: n2-standard-2-gdc
      name: nodepool-1
      nodeCount: NUMBER_OF_WORKER_NODES
    

    Substitua NUMBER_OF_WORKER_NODES pelo número atualizado de nós de trabalho a aprovisionar no node pool.

  3. Guarde o ficheiro e saia do editor.

  4. Verifique se o dimensionamento dos nós está concluído verificando a configuração do conjunto de nós:

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

    Confirme se o número readyNodes reflete a quantidade de nós que definiu para o conjunto de nós. O dimensionamento do conjunto de nós de acordo com a sua especificação pode demorar alguns minutos.

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 KUBERNETES_CLUSTER_NAMESPACE \
        --kubeconfig MANAGEMENT_API_SERVER
    

    Substitua o seguinte:

    • KUBERNETES_CLUSTER_NAME: o nome do cluster.
    • KUBERNETES_CLUSTER_NAMESPACE: o espaço de nomes do cluster. Para clusters partilhados, use o espaço de nomes platform. Para clusters padrão, use o espaço de nomes do projeto do cluster.
    • MANAGEMENT_API_SERVER: o caminho kubeconfig do servidor da API zonal onde o cluster Kubernetes está alojado. Se não tiver gerado um ficheiro kubeconfig para o servidor da API na sua zona segmentada, consulte Recursos do servidor da API de gestão zonal.
  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:
    # Several lines of code are omitted here.
    - 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.