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.

  • Elimine 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 pedir as autorizações necessárias e preparar o seu ambiente.

Peça funções de IAM

Tem de ter funções específicas para receber as autorizações necessárias para gerir pools de nós num cluster do Kubernetes. As funções necessárias dependem de estar a trabalhar num cluster partilhado com âmbito da organização ou num cluster padrão com âmbito do projeto. Para mais informações, consulte o artigo Configurações do cluster do Kubernetes.

Funções de cluster partilhadas

Para criar, eliminar, editar ou ver os conjuntos de nós de um cluster partilhado, contacte o administrador de IAM da sua organização para pedir a função Administrador de clusters de utilizadores (user-cluster-admin). Esta função não está associada a um espaço de nomes.

Funções de cluster padrão

Contacte o administrador de IAM do projeto para pedir as seguintes funções:

  • Administrador do cluster padrão (standard-cluster-admin): criar, eliminar, editar ou ver os conjuntos de nós de um cluster padrão.

  • Programador de clusters (cluster-developer): criar, eliminar, editar ou ver um cluster padrão. Esta função é necessária para ver os detalhes do conjunto de nós do cluster na consola do GDC.

Estas funções estão associadas ao espaço de nomes do seu projeto.

Prepare o seu ambiente

Para executar comandos num cluster do Kubernetes através da API, 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.

  • Use o nome do cluster do Kubernetes para substituir KUBERNETES_CLUSTER_NAME nestas instruções.

  • Inicie sessão e gere o ficheiro kubeconfig do servidor da API de gestão para o cluster do Kubernetes.

  • Use o caminho kubeconfig do servidor da API de gestão para substituir MANAGEMENT_API_SERVER nestas instruções.

Adicione um conjunto de nós

Para adicionar um node pool a um cluster do Kubernetes existente, conclua os seguintes passos:

Consola

  1. No seletor de projetos, selecione o seu projeto ou organização.

    Os clusters padrão têm âmbito do projeto e os clusters partilhados têm âmbito da organização. Selecione o âmbito correto para ver o tipo de cluster do Kubernetes adequado.

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

  3. Clique no cluster na lista de clusters. É apresentada a página Detalhes do cluster.

  4. Selecione Conjuntos de nós > Adicionar conjunto de nós.

  5. Atribua um nome ao conjunto de nós. Não pode modificar o nome depois de criar o conjunto de nós.

  6. Especifique o número de nós de trabalho a criar no conjunto de nós.

  7. 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
  8. 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.
  2. Adicione uma nova entrada na secção nodePools:

    nodePools:
    # Several lines of code are omitted here.
    - 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 conjunto de nós.
    • TAINTS: as manchas 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 de várias instâncias (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 seletor de projetos, selecione o seu projeto ou organização.

    Os clusters padrão têm âmbito do projeto e os clusters partilhados têm âmbito da organização. Selecione o âmbito correto para ver o tipo de cluster do Kubernetes adequado.

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

  3. Clique no cluster na lista de clusters. É apresentada a página Detalhes do cluster.

  4. Selecione Conjuntos de nós.

É apresentada a lista de pools de nós 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 seletor de projetos, selecione o seu projeto ou organização.

    Os clusters padrão têm âmbito do projeto e os clusters partilhados têm âmbito da organização. Selecione o âmbito correto para ver o tipo de cluster do Kubernetes adequado.

  2. No painel de controlo, selecione o projeto no qual existe o cluster que quer editar.

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

  4. Selecione o nome do cluster ao qual o conjunto de nós está associado. É apresentada a página Detalhes do cluster.

  5. Clique no separador Conjuntos de nós.

  6. Selecione o ícone Editar para o conjunto de nós que quer redimensionar. É apresentada a mensagem Editar node pool.

  7. 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.

  8. Clique em Guardar.

  9. 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 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 node pool.
    • 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.
  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 reagendam 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 seletor de projetos, selecione o seu projeto ou organização.

    Os clusters padrão têm âmbito do projeto e os clusters partilhados têm âmbito da organização. Selecione o âmbito correto para ver o tipo de cluster do Kubernetes adequado.

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

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

  4. Selecione Conjuntos de nós.

  5. 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.
  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.

O que se segue?