Ao criar um cluster do Kubernetes isolado 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 em um cluster existente à medida que os requisitos de computação mudam:
Adicionar um novo pool de nós: adicione novos pools de nós à medida que a demanda por cargas de trabalho do cluster aumenta.
Ver um pool de nós: confira as características e o estado dos seus 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 das cargas de trabalho do cluster diminuir ou se você quiser excluir tipos de máquina que não são mais adequados para suas 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 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, você precisa dos seguintes recursos e papéis:
Para visualizar e gerenciar pools de nós em um cluster compartilhado do Kubernetes, peça ao administrador do IAM da organização para conceder a você os seguintes papéis:
- Administrador do cluster de usuários (
user-cluster-admin) - Leitor de nós do cluster de usuário (
user-cluster-node-viewer)
Essas funções não estão vinculadas a um namespace.
- Administrador do cluster de usuários (
Para ver e gerenciar pools de nós em um cluster padrão do Kubernetes, peça ao administrador do IAM da organização para conceder a você o papel de Administrador de cluster padrão (
standard-cluster-admin). Essa função está vinculada ao namespace do projeto.Para executar comandos em um cluster do Kubernetes, 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.
Faça login e gere o arquivo kubeconfig para o cluster do Kubernetes se você não tiver um.
Use o caminho kubeconfig do cluster do Kubernetes para substituir
KUBERNETES_CLUSTER_KUBECONFIGnestas instruções.
Adicione um pool de nós
Para adicionar um pool de nós a um cluster do Kubernetes, siga estas etapas:
Console
- No menu de navegação, selecione Kubernetes Engine > Clusters.
- Clique no cluster na lista. A página Detalhes do cluster é mostrada.
- Selecione Pools de nós > Adicionar pool de nós.
- Atribua um nome ao pool de nós. Não é possível modificar o nome depois de criar o pool de nós.
- Especifique o número de nós de trabalho a serem criados no pool de nós.
- Selecione a classe de máquina mais adequada para os requisitos da sua carga de trabalho. As classes de máquina aparecem nas seguintes configurações:
- Tipo de máquina
- vCPU
- Memória
- Clique em Salvar.
API
Abra a especificação do recurso personalizado
Clustercom a CLIkubectlusando o editor interativo:kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME \ -n KUBERNETES_CLUSTER_NAMESPACE \ --kubeconfig MANAGEMENT_API_SERVERSubstitua:
KUBERNETES_CLUSTER_NAME: o nome do cluster.KUBERNETES_CLUSTER_NAMESPACE: o namespace do cluster. Para clusters compartilhados, use o namespaceplatform. 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. Se você ainda não gerou um arquivo kubeconfig para o servidor da API na zona de destino, consulte Fazer login para mais detalhes.
Adicione uma nova entrada na seção
nodePools:nodePools: ... - machineTypeName: MACHINE_TYPE name: NODE_POOL_NAME nodeCount: NUMBER_OF_WORKER_NODES taints: TAINTS labels: LABELS acceleratorOptions: gpuPartitionScheme: GPU_PARTITION_SCHEMESubstitua:
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 deste pool de nós. Esse campo é opcional.LABELS: os rótulos a serem aplicados aos nós deste 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 for definido. Para ver os perfis de GPU de várias instâncias (MIG) disponíveis, consulte Perfis de MIG compatíveis.
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
- No menu de navegação, selecione Kubernetes Engine > Clusters.
- Clique no cluster na lista. A página Detalhes do cluster é mostrada.
- Selecione Pools de nós.
A lista de pools de nós em execução no cluster é exibida. Nela, você pode gerenciar os pools de nós do cluster.
API
Confira 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.workerNodePoolStatusesSubstitua:
KUBERNETES_CLUSTER_NAME: o nome do cluster.KUBERNETES_CLUSTER_NAMESPACE: o namespace do cluster. Para clusters compartilhados, use o namespaceplatform. 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 a escala do 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
- No painel, selecione o projeto em que o cluster que você quer editar está.
- No menu de navegação, selecione Kubernetes Engine > Clusters.
- Selecione o nome do cluster associado ao pool de nós. A página Detalhes do cluster é exibida.
- Clique na guia Pools de nós.
- Selecione o ícone edit Editar do pool de nós que você quer redimensionar. A solicitação Editar pool de nós é exibida.
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 sua carga de trabalho.
Clique em Salvar.
Volte para a guia Pools de nós do cluster e confirme se o pool de nós redimensionado tem o status
Readye o número correto de nós. Pode levar alguns minutos para o pool de nós ser escalonado de acordo com sua especificação.
API
Abra a especificação do recurso personalizado
Clustercom a CLI kubectl usando o editor interativo:kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME \ -n KUBERNETES_CLUSTER_NAMESPACE \ --kubeconfig MANAGEMENT_API_SERVERSubstitua:
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 namespaceplatform. 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. Se você não tiver gerado um arquivo kubeconfig para o servidor da API na sua zona de destino, consulte Recursos do servidor da API de gerenciamento zonal.
Atualize o campo
nodeCountpara o pool de nós a ser redimensionado:nodePools: # Several lines of code are omitted here. - machineTypeName: n2-standard-2-gdc name: nodepool-1 nodeCount: NUMBER_OF_WORKER_NODESSubstitua
NUMBER_OF_WORKER_NODESpelo número atualizado de nós de trabalho a serem provisionados no pool de nós.Salve o arquivo e saia do editor.
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.workerNodePoolStatusesConfirme se o número
readyNodesreflete 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 de maneira eficaz.
Para excluir um pool de nós, siga estas etapas:
Console
No menu de navegação, selecione Kubernetes Engine > Clusters.
Clique no cluster que está hospedando o pool de nós que você quer excluir.
Selecione Pools de nós.
Clique em delete Excluir ao lado do pool de nós que você quer excluir.
API
Abra a especificação do recurso personalizado
Clustercom a CLI kubectl usando o editor interativo:kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME \ -n KUBERNETES_CLUSTER_NAMESPACE \ --kubeconfig MANAGEMENT_API_SERVERSubstitua:
KUBERNETES_CLUSTER_NAME: o nome do cluster.KUBERNETES_CLUSTER_NAMESPACE: o namespace do cluster. Para clusters compartilhados, use o namespaceplatform. 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. Se você não tiver gerado um arquivo kubeconfig para o servidor da API na sua zona de destino, consulte Recursos do servidor da API de gerenciamento zonal.
Remova a entrada do pool de nós da seção
nodePools. Por exemplo, no snippet a seguir, remova os camposmachineTypeName,nameenodeCount:nodePools: # Several lines of code are omitted here. - machineTypeName: n2-standard-2-gdc name: nodepool-1 nodeCount: 3Remova todos os campos do pool de nós que você está excluindo.
Salve o arquivo e saia do editor.