O Google Distributed Cloud (GDC) air-gapped permite-lhe gerir os seus clusters Kubernetes após a criação através do GKE no GDC. Este serviço permite-lhe adaptar-se aos requisitos de carga de trabalho de contentores em evolução.
Antes de começar
Para ver e gerir node pools num cluster do Kubernetes, tem de ter as seguintes funções:
- Administrador do cluster de utilizadores (
user-cluster-admin) - Visualizador de nós de cluster de utilizadores (
user-cluster-node-viewer)
Estas funções não estão associadas a um espaço de nomes.
Para executar comandos num cluster do Kubernetes, certifique-se de que tem os seguintes recursos:
Localize o nome do cluster do Kubernetes ou pergunte ao administrador da plataforma qual é o nome do cluster.
Inicie sessão e gere o ficheiro kubeconfig para o cluster Kubernetes, se não tiver um.
Use o caminho kubeconfig do cluster Kubernetes para substituir
KUBERNETES_CLUSTER_KUBECONFIGnestas instruções.
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 e 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 cordonfaz. - 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
NodeSelectorao pod da instância de máquina virtual (VMI) e, em seguida, param o pod. ONodeSelectorgarante 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 edit cluster KUBERNETES_CLUSTER_NAME \ -n KUBERNETES_CLUSTER_NAMESPACE \ --kubeconfig KUBERNETES_CLUSTER_KUBECONFIGSubstitua o seguinte para o cluster Kubernetes:
KUBERNETES_CLUSTER_NAME: o nome do cluster.KUBERNETES_CLUSTER_NAMESPACE: o espaço de nomes do cluster.KUBERNETES_CLUSTER_KUBECONFIG: o caminho do ficheiro kubeconfig.
Depois de a configuração do cluster ser aplicada, o cluster coloca os nós aplicáveis no modo de manutenção.
Adicione a secção
maintenanceBlocksao 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 ...Obtenha o estado dos nós no cluster:
kubectl get nodes -n KUBERNETES_CLUSTER_NAME \ --kubeconfig KUBERNETES_CLUSTER_KUBECONFIGA resposta é algo semelhante ao seguinte:
NAME STATUS ROLES AGE VERSION user-gdc-01 Ready master 2d22h v1.23.5-gke.1502 user-gdc-04 Ready none 2d22h v1.23.5-gke.1502 user-gdc-05 Ready,SchedulingDisabled none 2d22h v1.23.5-gke.1502 user-gdc-06 Ready none 2d22h v1.23.5-gke.1502Um estado de
SchedulingDisabledindica que um nó está no modo de manutenção.Obtenha o número de nós no modo de manutenção:
kubectl get nodepools --kubeconfig KUBERNETES_CLUSTER_KUBECONFIGA resposta tem um aspeto semelhante ao seguinte resultado:
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 as seguintes contaminações aos nós quando são colocados no modo de manutenção:
baremetal.cluster.gke.io/maintenance:NoExecutebaremetal.cluster.gke.io/maintenance:NoSchedule
Redimensione node pools
Qualquer cluster do KUBERNETES no ambiente da GDC pode ter o respetivo conjunto de nós redimensionado para se adaptar às alterações da carga de trabalho. Para gerir node pools num cluster do Kubernetes, tem de ter a função User Cluster Admin (user-cluster-admin).
Esta função não está associada a um espaço de nomes.
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 Kubernetes Engine > 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
Readye 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
Clustercom a CLIkubectlatravés do editor interativo:kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME -n platform \ --kubeconfig MANAGEMENT_API_SERVERSubstitua o seguinte:
KUBERNETES_CLUSTER_NAME: O nome do cluster que aloja o node pool.MANAGEMENT_API_SERVER: o caminho kubeconfig do servidor da API zonal onde o cluster Kubernetes está alojado. Se ainda não gerou um ficheiro kubeconfig para o servidor da API na zona segmentada, consulte Iniciar sessão para ver detalhes.
Atualize o campo
nodeCountpara o node pool a redimensionar: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 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/KUBERNETES_CLUSTER_NAME -n platform -o json \ --kubeconfig MANAGEMENT_API_SERVER | jq .status.workerNodePoolStatusesConfirme se o número
readyNodesreflete 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.
Mova clusters na hierarquia do projeto
Os projetos oferecem o agrupamento lógico de instâncias de serviços. Pode adicionar e remover clusters do Kubernetes da hierarquia do projeto GDC para agrupar os seus serviços de forma adequada.
Anexe o projeto a um cluster
Quando cria um cluster a partir da consola do GDC, tem de anexar, pelo menos, um projeto antes de poder implementar com êxito cargas de trabalho de contentores no mesmo. Se tiver de adicionar projetos adicionais a um cluster existente, conclua os seguintes passos:
- No menu de navegação, selecione Kubernetes Engine > Clusters.
- Clique no cluster na lista de clusters para abrir a página Detalhes do cluster.
- Selecione Anexar projeto.
- Selecione os projetos disponíveis para adicionar na lista de projetos. Clique em Guardar.
Desassocie um projeto de um cluster
Para desassociar um projeto de um cluster do Kubernetes existente, conclua os seguintes passos:
- No menu de navegação, selecione Kubernetes Engine > Clusters.
- Clique no cluster na lista de clusters para abrir a página Detalhes do cluster.
Clique em delete Desassociar para desassociar o projeto do cluster.
Veja todos os clusters numa organização
Pode ver todos os clusters do Kubernetes disponíveis numa organização, incluindo os respetivos estados, versões do Kubernetes e outros detalhes. Uma vez que os clusters do Kubernetes são um recurso zonal, só pode listar clusters por zona.
Consola
No menu de navegação, selecione Kubernetes Engine > Clusters.
São apresentados todos os clusters disponíveis na organização com os respetivos estados e outras informações:

kubectl
Liste os clusters Kubernetes disponíveis na zona numa organização:
kubectl get clusters.cluster.gdc.goog -n platform \ --kubeconfig MANAGEMENT_API_SERVERSubstitua
MANAGEMENT_API_SERVERpelo caminho kubeconfig do servidor da API zonal. Se ainda não gerou um ficheiro kubeconfig para o servidor da API na sua zona segmentada, consulte Iniciar sessão para ver detalhes.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 do Kubernetes, está disponível um conjunto de propriedades para alterar depois de ser criado. 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 Kubernetes Engine > Clusters.
Na lista de clusters do Kubernetes, 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
Clustere os valores válidos correspondentes a cada propriedade:kubectl explain clusters.cluster.gdc.goog.spec \ --kubeconfig MANAGEMENT_API_SERVERSubstitua
MANAGEMENT_API_SERVERpelo caminho kubeconfig do servidor da API zonal. Se ainda não gerou um ficheiro kubeconfig para o servidor da API na sua zona segmentada, consulte Iniciar sessão para ver detalhes.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 GDC air-gapped 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, GDC maintains the cluster versions for users. Optional. Mutable.Atualize estas definições através da consola do GDC ou da
kubectlCLI. 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 do Kubernetes.
Abra a especificação do recurso personalizado
Clustercom a CLIkubectlatravés do editor interativo:kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME -n platform \ --kubeconfig MANAGEMENT_API_SERVERSubstitua o seguinte:
KUBERNETES_CLUSTER_NAME: O nome do cluster que fornece o endereço IP.MANAGEMENT_API_SERVER: o caminho kubeconfig do servidor da API zonal onde o cluster Kubernetes está alojado. Se ainda não gerou um ficheiro kubeconfig para o servidor da API na zona segmentada, consulte Iniciar sessão para ver detalhes.
Atualize o campo
ingressServiceIPSizepara o novo tamanho do endereço IP:... spec: ... loadBalancer: ingressServiceIPSize: INGRESS_SERVICE_IP_SIZE ...Substitua
INGRESS_SERVICE_IP_SIZEpelo 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.
Atualize um cluster do Kubernetes
Pode fazer uma atualização automática ou manual do cluster Kubernetes. Para mais instruções sobre como atualizar o cluster, consulte a secção Atualização do cluster.