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_KUBECONFIG
nestas 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 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 edit cluster KUBERNETES_CLUSTER_NAME \ -n KUBERNETES_CLUSTER_NAMESPACE \ --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG
Substitua 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
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 ...
Obtenha o estado dos nós no cluster:
kubectl get nodes -n KUBERNETES_CLUSTER_NAME \ --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG
A 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.1502
Um estado de
SchedulingDisabled
indica 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_KUBECONFIG
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 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
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/KUBERNETES_CLUSTER_NAME -n platform \ --kubeconfig MANAGEMENT_API_SERVER
Substitua 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
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/KUBERNETES_CLUSTER_NAME -n platform -o json \ --kubeconfig MANAGEMENT_API_SERVER | 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.
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_SERVER
Substitua
MANAGEMENT_API_SERVER
pelo 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
Cluster
e os valores válidos correspondentes a cada propriedade:kubectl explain clusters.cluster.gdc.goog.spec \ --kubeconfig MANAGEMENT_API_SERVER
Substitua
MANAGEMENT_API_SERVER
pelo 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
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 do Kubernetes.
Abra a especificação do recurso personalizado
Cluster
com a CLIkubectl
através do editor interativo:kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME -n platform \ --kubeconfig MANAGEMENT_API_SERVER
Substitua 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
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.
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.