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 de utilizadores, 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 gerir pools de nós num cluster de utilizadores, tem de ter a função de administrador do cluster de utilizadores (função user-cluster-admin).

Adicione um node pool

Quando cria um cluster de utilizadores 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 de utilizadores existente, conclua os seguintes passos:

Consola

  1. No menu de navegação, selecione Clusters.
  2. Clique no cluster na lista de clusters. É apresentada a página Detalhes do cluster.
  3. Selecione Node pools > Add node pool.
  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. Opcional: adicione etiquetas de pares de chave-valor do Kubernetes para organizar os recursos do seu conjunto de nós.
  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/USER_CLUSTER_NAME -n platform \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

    Substitua o seguinte:

    • USER_CLUSTER_NAME: o nome do cluster de utilizadores.
    • ADMIN_CLUSTER_KUBECONFIG: O caminho do ficheiro kubeconfig do cluster do administrador.
  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
    

    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.
  3. Guarde o ficheiro e saia do editor.

Ver node pools

Para ver os node pools existentes num cluster de utilizador, conclua os seguintes passos:

Consola

  1. No menu de navegação, selecione 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 pools de nós de um cluster de utilizador específico:

    kubectl get clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform \
        -o json --kubeconfig ADMIN_CLUSTER_KUBECONFIG | \
        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 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/USER_CLUSTER_NAME -n platform \
          --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

    Substitua o seguinte:

    • USER_CLUSTER_NAME: o nome do cluster de utilizadores.
    • ADMIN_CLUSTER_KUBECONFIG: O caminho do ficheiro kubeconfig do cluster do administrador.
  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.

Tipos de máquinas de nós trabalhadores

Quando cria um cluster de utilizadores no dispositivo isolado do Google Distributed Cloud (GDC), cria pools de nós responsáveis pela execução das suas cargas de trabalho de contentores no cluster. Aprovisiona nós com base nos requisitos da carga de trabalho do contentor e pode atualizá-los à medida que os requisitos evoluem.

O GDC fornece tipos de máquinas predefinidos para os nós de trabalho, que são selecionáveis quando adiciona um conjunto de nós.

Tipos de máquinas disponíveis

O GDC define tipos de máquinas com alguns parâmetros para um nó do cluster de utilizadores, que incluem CPU, memória e GPU. O GDC tem vários tipos de máquinas para diferentes fins. Por exemplo, os clusters de utilizadores usam n2-standard-2-gdc para cargas de trabalho de contentores de uso geral. Também pode encontrar tipos de máquinas para fins de otimização da memória, como n2-highcpu-8-gdc. Se planeia executar contentores de aprendizagem profunda, tem de aprovisionar máquinas com GPU, como a2-highgpu-1g-gdc.

Segue-se uma lista de todos os tipos de máquinas predefinidos do GDC disponíveis para nós de trabalho do cluster de utilizadores:

Nome vCPUs Memória Número de GPUs
n2-standard-2-gdc 2 8G N/A
n2-standard-4-gdc 4 16G N/A
n2-highmem-4-gdc 4 32G N/A
n2-highcpu-8-gdc 8 8G N/A
n2-standard-8-gdc 8 32G N/A
n2-highmem-8-gdc 8 64G N/A
a2-highgpu-1g-gdc 12 85G 1
a2-ultragpu-1g-gdc 12 170G 1