Com o appliance isolado do Google Distributed Cloud (GDC), é possível gerenciar seus clusters do Kubernetes após a criação para se adaptar aos requisitos de carga de trabalho de contêiner em evolução.
Realizar manutenção do nó
Quando você precisar reparar ou manter os nós, primeiro coloque-os no modo de manutenção. Colocar nós no modo de manutenção drena os pods/cargas de trabalho com segurança e exclui os nós da programação de pods. No modo de manutenção, é possível trabalhar nos nós sem o risco de interromper o tráfego dos pods.
Como funciona
O modo de manutenção para GDC é semelhante à execução de kubectl
cordon e kubectl drain para um nó específico. Confira alguns detalhes relevantes para o modo de manutenção:
- Os nós especificados são marcados como não programáveis. Essa é a ação que o
kubectl cordonfaz. - Os taints de nó são adicionados aos nós especificados para indicar que nenhum pod pode ser
programado ou executado neles. Essa ação é semelhante a
kubectl drain. - É aplicado um tempo limite de 20 minutos para garantir que os nós não fiquem travados aguardando o encerramento dos pods. Os pods não serão encerrados se estiverem configurados para tolerar todos os taints ou tiverem finalizadores. Os clusters do GDC tentam encerrar todos os pods, mas, se o tempo limite for excedido, o nó será colocado no modo de manutenção. Esse tempo limite impede que os pods em execução bloqueiem os upgrades.
- Se você tiver uma carga de trabalho baseada em VM em execução no nó, os clusters do GDC vão aplicar um
NodeSelectorao pod da instância de máquina virtual (VMI) e, em seguida, interromper o pod. ONodeSelectorgarante que o pod VMI seja reiniciado no mesmo nó quando ele for removido do modo de manutenção.
Colocar um nó no modo de manutenção
Escolha os nós que você quer colocar no modo de manutenção especificando os intervalos de endereços IP dos nós selecionados na seção maintenanceBlocks do arquivo de configuração do cluster. Os nós escolhidos precisam estar no estado Ready e
funcionando no cluster.
Para colocar nós no modo de manutenção:
Edite o arquivo de configuração do cluster para selecionar os nós que você quer colocar no modo de manutenção.
É possível editar o arquivo de configuração com um editor de sua preferência ou editar o recurso personalizado do cluster diretamente executando o seguinte comando:
kubectl -n CLUSTER_NAMESPACE edit cluster CLUSTER_NAMESubstitua:
- CLUSTER_NAMESPACE: o namespace do cluster.
- CLUSTER_NAME: o nome do cluster.
Adicione a seção
maintenanceBlocksao arquivo de configuração do cluster para especificar um único endereço IP ou um intervalo de endereços para os nós que você quer colocar no modo de manutenção.O exemplo a seguir mostra como selecionar vários nós especificando um intervalo de endereços IP:
... metadata: name: my-cluster namespace: cluster-my-cluster spec: maintenanceBlocks: cidrBlocks: - 172.16.128.1-172.16.128.64 ...Salve e aplique a configuração atualizada do cluster:
kubectl apply -f my-cluster.yamlDepois que a configuração do cluster for aplicada, ele colocará os nós aplicáveis no modo de manutenção.
Execute o seguinte comando para ver o status dos nós no cluster:
kubectl get nodes -n CLUSTER_NAMEA resposta é semelhante a esta:
NAME STATUS ROLES AGE VERSION user-gdch-01 Ready master 2d22h v1.23.5-gke.1502 user-gdch-04 Ready none 2d22h v1.23.5-gke.1502 user-gdch-05 Ready,SchedulingDisabled none 2d22h v1.23.5-gke.1502 user-gdch-06 Ready none 2d22h v1.23.5-gke.1502O status
SchedulingDisabledindica que um nó está no modo de manutenção.Execute o seguinte comando para ver o número de nós no modo de manutenção:
kubectl get nodepoolsA resposta será semelhante a esta:
NAME READY RECONCILING STALLED UNDERMAINTENANCE UNKNOWN np1 3 0 0 1 0A coluna
UNDERMAINTENANCEneste exemplo mostra que um nó está no modo de manutenção.Os clusters também adicionam os seguintes taints aos nós quando eles são colocados no modo de manutenção:
baremetal.cluster.gke.io/maintenance:NoExecutebaremetal.cluster.gke.io/maintenance:NoSchedule
Redimensionar pools de nós
O pool de nós de qualquer cluster de usuário no ambiente do GDC pode ser redimensionado para escalonar com as mudanças na carga de trabalho. Para gerenciar pools de nós em um cluster de usuário, é necessário ter a função Administrador do cluster de usuário (user-cluster-admin).
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 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 que o pool de nós seja escalonado de acordo com sua especificação.
API
Abra a especificação do recurso personalizado
Clustercom a CLIkubectlusando o editor interativo:kubectl edit clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform \ --kubeconfig ORG_ADMIN_CLUSTER_KUBECONFIGAtualize o campo
nodeCountpara o pool de nós a ser redimensionado:nodePools: ... - 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/USER_CLUSTER_NAME -n platform -o json \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG | 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 o pool de nós ser escalonado de acordo com sua especificação.
Ver todos os clusters em uma organização
É possível conferir todos os clusters de usuários disponíveis em uma organização, incluindo os status, as versões do Kubernetes e outros detalhes.
Console
No menu de navegação, selecione Clusters.
Todos os clusters disponíveis na organização com os respectivos status e outras informações são exibidos:

kubectl
Liste os clusters de usuário disponíveis em uma organização:
kubectl get clusters.cluster.gdc.goog -n platform \ --kubeconfig ADMIN_CLUSTER_KUBECONFIGO resultado será assim:
NAME STATE K8S VERSION user-vm-1 Running 1.25.10-gke.2100 user-test Running 1.26.5-gke.2100
Ver propriedades atualizáveis
Para cada cluster de usuário, um conjunto de propriedades está disponível para mudança após a
criação. Só é possível mudar as propriedades mutáveis que estão no spec do recurso personalizado Cluster. Nem todas as propriedades em spec podem ser atualizadas depois que o cluster é provisionado. Para conferir essas propriedades atualizáveis,
siga estas etapas:
Console
No menu de navegação, selecione Clusters.
Na lista de clusters de usuário, clique no nome de um cluster para ver as propriedades dele.
As propriedades editáveis têm um ícone edit Editar.
kubectl
Confira a lista de propriedades da especificação
Clustere os valores válidos correspondentes a cada propriedade:kubectl explain clusters.cluster.gdc.goog.spec \ --kubeconfig ORG_ADMIN_CLUSTER_KUBECONFIGO resultado será assim:
KIND: Cluster VERSION: cluster.gdc.goog/v1 RESOURCE: spec <Object> DESCRIPTION: <empty> FIELDS: clusterNetwork <Object> The cluster network configuration. If unset, the default configurations with pod and service CIDR sizes are used. Optional. Mutable. initialVersion <Object> The GDCH version information of the user cluster during cluster creation. Optional. Default to use the latest applicable version. Immutable. loadBalancer <Object> The load balancer configuration. If unset, the default configuration with the ingress service IP address size is used. Optional. Mutable. nodePools <[]Object> The list of node pools for the cluster worker nodes. Optional. Mutable. releaseChannel <Object> The release channel a cluster is subscribed to. When a cluster is subscribed to a release channel, GDCH maintains the cluster versions for users. Optional. Mutable.Atualize essas configurações usando o console do GDC ou a CLI
kubectl. Por exemplo, é possível redimensionar um pool de nós.
Ajustar o tamanho do endereço IP do serviço de entrada
É possível escalonar o tamanho do endereço IP do serviço de entrada depois de criar um cluster de usuário.
Abra a especificação do recurso personalizado
Clustercom a CLIkubectlusando o editor interativo:kubectl edit clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform \ --kubeconfig ADMIN_CLUSTER_KUBECONFIGAtualize o campo
ingressServiceIPSizepara o novo tamanho do endereço IP:... spec: ... loadBalancer: ingressServiceIPSize: INGRESS_SERVICE_IP_SIZE ...Substitua
INGRESS_SERVICE_IP_SIZEpelo tamanho atualizado do endereço IP do serviço de entrada.Salve o arquivo e saia do editor.
Não há um limite definido para o tamanho do endereço IP do serviço de entrada. A quantidade de endereços IP solicitados é atendida com base na sua organização. Se a solicitação não puder ser atendida, o cluster vai informar um erro.