gerencie os pools de nós

Quando você cria um cluster do Kubernetes do Google Distributed Cloud (GDC) com isolamento físico, o número e o tipo de nós que você especifica criam o primeiro pool de nós do cluster. É possível realizar as seguintes tarefas de pool de nós em um cluster atual conforme os requisitos de computação mudam:

  • Adicionar um novo pool de nós: adicione novos pools de nós conforme a demanda pelas cargas de trabalho do cluster aumenta.

  • Ver um pool de nós: confira as características e o estado dos pools de nós atuais.

  • Redimensionar um pool de nós: aumente ou diminua manualmente os pools de nós para se adaptar às flutuações de tráfego da carga de trabalho.

  • Excluir um pool de nós: remova pools de nós se a demanda pelas cargas de trabalho do cluster diminuir ou se você quiser excluir tipos de máquina que não são mais adequados para as operações de contêiner.

Para mais informações sobre pools de nós em um cluster, consulte Sobre nós.

Este documento é destinado a desenvolvedores de aplicativos no grupo de operadores de aplicativos e administradores de TI no grupo de administradores de plataforma que são responsáveis por gerenciar clusters do Kubernetes na organização. Para mais informações, consulte Públicos-alvo da documentação do GDC com isolamento físico.

Antes de começar

Para concluir as tarefas neste documento, solicite as permissões necessárias e prepare seu ambiente.

Solicitar papéis do IAM

É preciso ter papéis específicos para receber as permissões necessárias para gerenciar pools de nós em um cluster do Kubernetes. Os papéis necessários dependem de você estar trabalhando em um cluster compartilhado com escopo de organização ou em um cluster padrão com escopo de projeto. Para mais informações, consulte Configurações de cluster do Kubernetes.

Papéis de cluster compartilhados

Para criar, excluir, editar ou visualizar os pools de nós de um cluster compartilhado, entre em contato com o admin. da organização do IAM para solicitar o papel de administrador de cluster de usuário (user-cluster-admin). Esse papel não está vinculado a um namespace.

Papéis de cluster padrão

Entre em contato com o administrador do projeto do IAM para solicitar os seguintes papéis:

  • Administrador de cluster padrão (standard-cluster-admin): criar, excluir, editar ou visualizar os pools de nós de um cluster padrão.

  • Desenvolvedor de cluster (cluster-developer): criar, excluir, editar ou visualizar um cluster padrão. Esse papel é necessário para ver os detalhes do pool de nós do cluster no console do GDC.

Esses papéis estão vinculados ao namespace do projeto.

Preparar o ambiente

Para executar comandos em um cluster do Kubernetes usando a API, verifique se você 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.

  • Faça login e gere o arquivo kubeconfig do servidor de API de gerenciamento para o cluster do Kubernetes.

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

Adicione um pool de nós

Para adicionar um pool de nós a um cluster do Kubernetes, siga estas etapas:

Console

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

    Os clusters padrão têm escopo de projeto, e os clusters compartilhados têm escopo de organização. Selecione o escopo correto para ver o tipo de cluster do Kubernetes apropriado.

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

  3. Clique no cluster na lista. A página Detalhes do cluster é exibida.

  4. Selecione Pools de nós > Adicionar pool de nós.

  5. Atribua um nome ao pool de nós. Não é possível modificar o nome depois de criar o pool de nós.

  6. Especifique o número de nós de trabalho a serem criados no pool de nós.

  7. Selecione a classe de máquina mais adequada para os requisitos da sua carga de trabalho. As classes de máquina são mostradas nas seguintes configurações:

    • Tipo de máquina
    • vCPU
    • Memória
  8. Clique em Salvar.

API

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

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

    Substitua:

    • KUBERNETES_CLUSTER_NAME: o nome do cluster.
    • KUBERNETES_CLUSTER_NAMESPACE: o namespace do cluster. Para clusters compartilhados, use o namespace platform. Para clusters padrão, use o namespace do projeto do cluster.
    • MANAGEMENT_API_SERVER: o caminho kubeconfig do servidor de API zonal em que o cluster do Kubernetes está hospedado.
  2. Adicione uma nova entrada na seçã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:

    • MACHINE_TYPE: o tipo de máquina para os nós de trabalho do pool de nós. Confira os tipos de máquina disponíveis para saber o que pode ser configurado.
    • NODE_POOL_NAME: o nome do pool de nós.
    • NUMBER_OF_WORKER_NODES: o número de nós de trabalho a serem provisionados no pool de nós.
    • TAINTS: os taints a serem aplicados aos nós desse pool de nós. Esse campo é opcional.
    • LABELS: os rótulos a serem aplicados aos nós desse pool de nós. Ele contém uma lista de pares de chave-valor. Esse campo é opcional.
    • GPU_PARTITION_SCHEME: o esquema de particionamento de GPU, se você estiver executando cargas de trabalho de GPU. Por exemplo, mixed-2. A GPU não será particionada se esse campo não estiver definido. Para ver os perfis de GPU de várias instâncias (MIG) disponíveis, consulte Perfis de MIG compatíveis.
  3. Salve o arquivo e saia do editor.

Ver pools de nós

Para ver os pools de nós em um cluster do Kubernetes, siga estas etapas:

Console

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

    Os clusters padrão têm escopo de projeto, e os clusters compartilhados têm escopo de organização. Selecione o escopo correto para ver o tipo de cluster do Kubernetes apropriado.

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

  3. Clique no cluster na lista. A página Detalhes do cluster é exibida.

  4. Selecione Pools de nós.

A lista de pools de nós em execução no cluster é exibida. É possível gerenciar os pools de nós do cluster nesta página.

API

  • Veja os pools de nós de um cluster específico do Kubernetes:

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

    Substitua:

    • KUBERNETES_CLUSTER_NAME: o nome do cluster.
    • KUBERNETES_CLUSTER_NAMESPACE: o namespace do cluster. Para clusters compartilhados, use o namespace platform. Para clusters padrão, use o namespace do projeto do cluster.

    O resultado será o 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
      }
    ]
    

Redimensionar pools de nós

É possível redimensionar manualmente os pools de nós em um cluster do Kubernetes aumentando ou diminuindo o pool. Não é possível selecionar um nó específico para remover ao reduzir um pool de nós.

Para escalonar um pool de nós em um cluster, siga estas etapas:

Console

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

    Os clusters padrão têm escopo de projeto, e os clusters compartilhados têm escopo de organização. Selecione o escopo correto para ver o tipo de cluster do Kubernetes apropriado.

  2. No painel, selecione o projeto em que o cluster que você quer editar existe.

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

  4. Selecione o nome do cluster associado ao pool de nós. A página Detalhes do cluster é exibida.

  5. Clique na guia Pools de nós.

  6. Selecione o ícone Editar do pool de nós que você quer redimensionar. O prompt Editar pool de nós é exibido.

  7. Atualize o campo Número de nós para refletir a nova quantidade de nós necessária no pool de nós. É possível aumentar ou diminuir o número de nós para atender aos requisitos da carga de trabalho.

  8. Clique em Salvar.

  9. Volte para a guia Pools de nós do cluster e confirme se o pool de nós redimensionado tem o status Ready e o número correto de nós. Pode levar alguns minutos para que o pool de nós seja escalonado de acordo com sua especificação.

    Confirme se o pool de nós está pronto usando o console.

API

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

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

    Substitua:

    • KUBERNETES_CLUSTER_NAME: o nome do cluster que hospeda o pool de nós.
    • KUBERNETES_CLUSTER_NAMESPACE: o namespace do cluster. Para clusters compartilhados, use o namespace platform. Para clusters padrão, use o namespace do projeto do cluster.
    • MANAGEMENT_API_SERVER: o caminho kubeconfig do servidor de API zonal em que o cluster do Kubernetes está hospedado.
  2. Atualize o campo nodeCount do pool de nós que será redimensionado:

    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 serem provisionados no pool de nós.

  3. Salve o arquivo e saia do editor.

  4. Verifique se o escalonamento de nós foi concluído conferindo a configuração do pool 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 você definiu para o pool de nós. Pode levar alguns minutos para que o pool de nós seja escalonado de acordo com sua especificação.

Excluir um pool de nós

A exclusão de um pool de nós exclui os nós e as rotas dele. Esses nós removem e reprogramam todos os pods em execução neles. Se os pods tiverem seletores de nó específicos, eles poderão permanecer em uma condição não programável se nenhum outro nó no cluster cumprir os critérios.

Verifique se você tem pelo menos três nós de trabalho antes de excluir um pool de nós para garantir que o cluster tenha espaço de computação suficiente para ser executado de maneira eficaz.

Para excluir um pool de nós, siga estas etapas:

Console

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

    Os clusters padrão têm escopo de projeto, e os clusters compartilhados têm escopo de organização. Selecione o escopo correto para ver o tipo de cluster do Kubernetes apropriado.

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

  3. Clique no cluster que hospeda o pool de nós que você quer excluir.

  4. Selecione Pools de nós.

  5. Clique em Excluir ao lado do pool de nós que você quer excluir.

API

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

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

    Substitua:

    • KUBERNETES_CLUSTER_NAME: o nome do cluster.
    • KUBERNETES_CLUSTER_NAMESPACE: o namespace do cluster. Para clusters compartilhados, use o namespace platform. Para clusters padrão, use o namespace do projeto do cluster.
    • MANAGEMENT_API_SERVER: o caminho kubeconfig do servidor de API zonal em que o cluster do Kubernetes está hospedado.
  2. Remova a entrada do pool de nós da seção nodePools. Por exemplo, no snippet a seguir, é necessário 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
    

    Remova todos os campos do pool de nós que você está excluindo.

  3. Salve o arquivo e saia do editor.

A seguir