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:
Adicionar um novo pool de nós: adicione novos pools de nós à medida que a demanda por cargas de trabalho do cluster aumenta.
Visualizar 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 os pools de nós se a demanda por 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 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_NAMEnestas 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_SERVERnestas 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
- No menu de navegação, selecione Kubernetes Engine > Clusters.
- Clique no cluster na lista de clusters. A página Detalhes do cluster é exibida.
- 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 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
- 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.
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_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 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.
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
- No menu de navegação, selecione Kubernetes Engine > Clusters.
- Clique no cluster na lista de clusters. A página Detalhes do cluster é exibida.
- 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.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á 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
- No painel, selecione o projeto em que o cluster que você quer editar existe.
- No menu de navegação, selecione Kubernetes Engine > Clusters.
- Selecione o nome do cluster ao qual o pool de nós está associado. 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. O prompt Editar pool de nós é exibido.
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.
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 que o pool de nós seja 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.
Atualize o campo
nodeCountdo 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_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 com eficiência.
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 a ser excluído.
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.
Remova a entrada do pool de nós da seção
nodePools. Por exemplo, no snippet a seguir, é necessário remover 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.
A seguir
- Manter clusters do Kubernetes
- Cargas de trabalho de contêiner no GDC
- Isolar cargas de trabalho de contêiner