O dispositivo isolado do Google Distributed Cloud (GDC) permite-lhe gerir os clusters do Kubernetes após a criação para que possa adaptar-se aos requisitos em evolução da sua carga de trabalho de contentores.
Realize a manutenção de nós
Quando precisar de reparar ou fazer a manutenção dos nós, primeiro, coloque-os no modo de manutenção. A colocação de nós no modo de manutenção esgota em segurança os respetivos pods/cargas de trabalho e exclui os nós do agendamento de pods. No modo de manutenção, pode trabalhar nos seus nós sem o risco de interromper o tráfego de pods.
Como funciona
O modo de manutenção para o GDC é semelhante à execução de kubectl
cordon
e kubectl drain
para um nó específico. Seguem-se alguns detalhes relevantes para o modo de manutenção:
- Os nós especificados estão marcados como não agendáveis. Esta ação é o que
kubectl cordon
faz. - As restrições de nós são adicionadas aos nós especificados para indicar que não é possível agendar nem executar pods nos nós. Esta ação é semelhante a
kubectl drain
. - É aplicado um limite de tempo de 20 minutos para garantir que os nós não ficam bloqueados à espera que os pods terminem. Os pods podem não terminar se estiverem configurados para tolerar todas as falhas ou tiverem finalizadores. Os clusters GDC tentam terminar todos os pods, mas, se o limite de tempo for excedido, o nó é colocado no modo de manutenção. Este limite de tempo impede que os pods em execução bloqueiem as atualizações.
- Se tiver uma carga de trabalho baseada em VMs em execução no nó, os clusters GDC aplicam um
NodeSelector
ao pod da instância de máquina virtual (VMI) e, em seguida, param o pod. ONodeSelector
garante que o pod VMI é reiniciado no mesmo nó quando o nó é removido do modo de manutenção.
Coloque um nó no modo de manutenção
Escolha os nós que quer colocar no modo de manutenção especificando intervalos de endereços IP para os nós selecionados na secção maintenanceBlocks
do ficheiro de configuração do cluster. Os nós que escolher têm de estar num estado Ready
e a funcionar no cluster.
Para colocar nós no modo de manutenção:
Edite o ficheiro de configuração do cluster para selecionar os nós que quer colocar no modo de manutenção.
Pode editar o ficheiro de configuração com um editor à sua escolha ou pode editar o recurso personalizado do cluster diretamente executando o seguinte comando:
kubectl -n CLUSTER_NAMESPACE edit cluster CLUSTER_NAME
Substitua o seguinte:
- CLUSTER_NAMESPACE: o espaço de nomes do cluster.
- CLUSTER_NAME: o nome do cluster.
Adicione a secção
maintenanceBlocks
ao ficheiro de configuração do cluster para especificar um único endereço IP ou um intervalo de endereços para os nós que quer colocar no modo de manutenção.O exemplo seguinte 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 ...
Guarde e aplique a configuração do cluster atualizada:
kubectl apply -f my-cluster.yaml
Depois de a configuração do cluster ser aplicada, o cluster coloca os nós aplicáveis no modo de manutenção.
Execute o seguinte comando para obter o estado dos nós no cluster:
kubectl get nodes -n CLUSTER_NAME
A resposta é algo semelhante ao seguinte:
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.1502
Um estado de
SchedulingDisabled
indica que um nó está no modo de manutenção.Execute o seguinte comando para obter o número de nós no modo de manutenção:
kubectl get nodepools
A resposta tem um aspeto semelhante ao seguinte resultado:
NAME READY RECONCILING STALLED UNDERMAINTENANCE UNKNOWN np1 3 0 0 1 0
A coluna
UNDERMAINTENANCE
neste exemplo mostra que um nó está no modo de manutenção.Os clusters também adicionam as seguintes contaminações aos nós quando são colocados no modo de manutenção:
baremetal.cluster.gke.io/maintenance:NoExecute
baremetal.cluster.gke.io/maintenance:NoSchedule
Redimensione node pools
Qualquer cluster de utilizadores no ambiente do GDC pode ter o tamanho do respetivo conjunto de nós alterado para ser dimensionado de acordo com as alterações da carga de trabalho. Para gerir pools de nós num cluster de utilizador, tem de ter a função User Cluster Admin (user-cluster-admin
).
Para dimensionar um conjunto de nós num cluster existente, conclua os seguintes passos:
Consola
- No painel de controlo, selecione o projeto no qual existe o cluster que quer editar.
- No menu de navegação, selecione Clusters.
- Selecione o nome do cluster ao qual o conjunto de nós está associado. É apresentada a página Detalhes do cluster.
- Clique no separador Conjuntos de nós.
- Selecione o ícone edit Editar para o conjunto de nós que quer redimensionar. É apresentado o comando Editar node pool.
Atualize o campo Número de nós para refletir a nova quantidade de nós necessários no node pool. Pode aumentar ou diminuir o número de nós para se adequar aos requisitos da sua carga de trabalho.
Clique em Guardar.
Navegue novamente para o separador Conjuntos de nós do cluster e confirme se o conjunto de nós redimensionado tem o estado
Ready
e o número correto de nós. A expansão do conjunto de nós para a sua especificação pode demorar alguns minutos.
API
Abra a especificação do recurso personalizado
Cluster
com a CLIkubectl
através do editor interativo:kubectl edit clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform \ --kubeconfig ORG_ADMIN_CLUSTER_KUBECONFIG
Atualize o campo
nodeCount
para o node pool a redimensionar:nodePools: ... - 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 aprovisionar no node pool.Guarde o ficheiro e saia do editor.
Verifique se o dimensionamento dos nós está concluído verificando a configuração do conjunto de nós:
kubectl get clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform -o json \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG | jq .status.workerNodePoolStatuses
Confirme se o número
readyNodes
reflete a quantidade de nós que definiu para o conjunto de nós. A expansão do conjunto de nós de acordo com a sua especificação pode demorar alguns minutos.
Veja todos os clusters numa organização
Pode ver todos os clusters de utilizadores disponíveis numa organização, incluindo os respetivos estados, versões do Kubernetes e outros detalhes.
Consola
No menu de navegação, selecione Clusters.
São apresentados todos os clusters disponíveis na organização com os respetivos estados e outras informações:
kubectl
Liste os clusters de utilizadores disponíveis numa organização:
kubectl get clusters.cluster.gdc.goog -n platform \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
O resultado é semelhante ao seguinte:
NAME STATE K8S VERSION user-vm-1 Running 1.25.10-gke.2100 user-test Running 1.26.5-gke.2100
Veja as propriedades atualizáveis
Para cada cluster de utilizadores, está disponível um conjunto de propriedades para alterar após a sua criação. Só pode alterar as propriedades mutáveis que se encontram no spec
de
recurso personalizado Cluster
. Nem todas as propriedades em spec
são elegíveis para
atualização após o aprovisionamento do cluster. Para ver estas propriedades atualizáveis,
conclua os seguintes passos:
Consola
No menu de navegação, selecione Clusters.
Na lista de clusters de utilizadores, clique no nome de um cluster para ver as respetivas propriedades.
As propriedades editáveis têm um ícone edit Editar.
kubectl
Veja a lista de propriedades da especificação
Cluster
e os valores válidos correspondentes a cada propriedade:kubectl explain clusters.cluster.gdc.goog.spec \ --kubeconfig ORG_ADMIN_CLUSTER_KUBECONFIG
O resultado é semelhante ao seguinte:
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 estas definições através da consola do GDC ou da
kubectl
CLI. Por exemplo, pode redimensionar um conjunto de nós.
Dimensione o tamanho do endereço IP do serviço de entrada
Pode dimensionar o tamanho do endereço IP do serviço de entrada depois de criar um cluster de utilizadores.
Abra a especificação do recurso personalizado
Cluster
com a CLIkubectl
através do editor interativo:kubectl edit clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Atualize o campo
ingressServiceIPSize
para o novo tamanho do endereço IP:... spec: ... loadBalancer: ingressServiceIPSize: INGRESS_SERVICE_IP_SIZE ...
Substitua
INGRESS_SERVICE_IP_SIZE
pelo tamanho do endereço IP do serviço de entrada atualizado.Guarde o ficheiro e saia do editor.
Não existe um limite definido para o tamanho do endereço IP do serviço de entrada. A quantidade de endereços IP pedidos é preenchida com base na sua organização. Se o pedido não puder ser cumprido, o cluster comunica um erro.