gerencie os pools de nós

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

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 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, peça as permissões necessárias e prepare o ambiente.

Solicitar papéis do IAM

Você precisa de 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 da organização ou em um cluster padrão com escopo do projeto. Para mais informações, consulte Configurações de cluster do Kubernetes.

Papéis de cluster compartilhado

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

Papéis de cluster padrão

Para criar, excluir, editar ou visualizar os pools de nós de um cluster padrão, entre em contato com o administrador do IAM do projeto para solicitar o papel de administrador do cluster padrão (standard-cluster-admin). Esse papel está vinculado 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 da API de gerenciamento para o cluster do Kubernetes.

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

Adicionar um pool de nós

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

Console

  1. No menu de navegação, selecione Kubernetes Engine > Clusters.
  2. Clique no cluster na lista de clusters. A página Detalhes do cluster é exibida.
  3. Selecione Pools de nós > Adicionar pool de nós.
  4. Atribua um nome ao pool de nós. Não é possível modificar o nome depois de criar o pool de nós.
  5. Especifique o número de nós de trabalho a serem criados no pool de nós.
  6. Selecione a classe de máquina mais adequada aos requisitos da carga de trabalho. As classes de máquina são mostradas nas seguintes configurações:
    • Tipo de máquina
    • vCPU
    • Memória
  7. 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 da 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. Consulte 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 conferir 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.

Visualizar pools de nós

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

Console

  1. No menu de navegação, selecione Kubernetes Engine > Clusters.
  2. Clique no cluster na lista de clusters. A página Detalhes do cluster é exibida.
  3. 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 nessa página.

API

  • Visualize os pools de nós 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:

    • 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á assim:

    [
      {
        "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 atual, siga estas etapas:

Console

  1. No painel, selecione o projeto em que o cluster que você quer editar existe.
  2. No menu de navegação, selecione Kubernetes Engine > Clusters.
  3. Selecione o nome do cluster ao qual o pool de nós está associado. A página Detalhes do cluster é exibida.
  4. Clique na guia Pools de nós.
  5. Selecione o ícone Editar do pool de nós que você quer redimensionar. O prompt Editar pool de nós é exibido.
  6. Atualize o campo Número de nós para refletir a nova quantidade de nós necessários no pool de nós. É possível aumentar ou diminuir o número de nós para atender aos requisitos da carga de trabalho.

  7. Clique em Salvar.

  8. 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 da API zonal em que o cluster do Kubernetes está hospedado.
  2. Atualize o campo nodeCount do pool de nós para 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 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 definida 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 com eficiência.

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

Console

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

  2. Clique no cluster que está hospedando o pool de nós que você quer excluir.

  3. Selecione Pools de nós.

  4. Clique em Excluir ao lado do pool de nós a ser excluído.

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