Este documento explica como atualizar a versão do Kubernetes de um cluster do Kubernetes isolado do ar do Google Distributed Cloud (GDC). Tem de planear atualizações de rotina para os seus clusters para garantir que incorporam as funcionalidades e as correções mais recentes do Kubernetes.
Este documento destina-se a públicos como administradores de TI, engenheiros de segurança e administradores de rede no grupo de administradores da plataforma, que são responsáveis pela gestão de recursos do Kubernetes na respetiva organização. Para mais informações, consulte a documentação sobre públicos-alvo para GDC com isolamento de ar.
Antes de começar
Instale a CLI kubectl. Para mais informações, consulte o artigo Instale componentes.
Gere um ficheiro kubeconfig para o servidor da API de gestão na zona segmentada. Para mais informações, consulte o artigo Recursos do cluster Kubernetes zonal.
Para receber as autorizações necessárias para listar as versões de atualização disponíveis, peça ao administrador do IAM da sua organização para lhe conceder a função de administrador do cluster de utilizadores (
user-cluster-admin).Se gerir um cluster padrão e não conseguir obter a função de administrador do cluster de utilizadores do seu grupo de administradores da plataforma, tem de pedir que lhe forneçam a lista de versões de atualização do Kubernetes disponíveis.
Para receber as autorizações necessárias para configurar uma atualização do cluster, peça ao administrador de IAM da organização para lhe conceder a função de administrador do cluster padrão (
standard-cluster-admin).
Atualize um cluster do Kubernetes
Use a API
UserClusterUpgradeRequest
para atualizar um cluster do Kubernetes existente.
Para atualizar um cluster do Kubernetes através da API, siga estes passos:
Liste as versões de atualização do Kubernetes disponíveis imprimindo o valor
kubernetesVersiondos objetosUserClusterMetadata:kubectl --kubeconfig MANAGEMENT_API_SERVER \ get userclustermetadata -o=custom-columns='TARGET_VERSION:.spec.kubernetesVersion'Substitua
MANAGEMENT_API_SERVERpelo caminho para o ficheiro kubeconfig do servidor da API de gestão.O comando devolve uma lista de versões do Kubernetes disponíveis:
TARGET_VERSION 1.30.1000-gke.85Tome nota da versão do Kubernetes da saída anterior para a qual quer atualizar o cluster. A
targetVersionque especificar no pedido de atualização no passo seguinte tem de ser uma destas versões disponíveis.Peça a atualização do cluster criando um
UserClusterUpgradeRequestrecurso:kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF apiVersion: cluster.gdc.goog/v1 kind: UserClusterUpgradeRequest metadata: name: CLUSTER_NAME namespace: CLUSTER_NAMESPACE spec: clusterRef: name: CLUSTER_NAME targetVersion: TARGET_VERSION EOFSubstitua o seguinte:
MANAGEMENT_API_SERVER: o caminho para o ficheiro kubeconfig do servidor da API de gestão.CLUSTER_NAME: o nome do cluster do Kubernetes a atualizar, comouser-vm-2.CLUSTER_NAMESPACE: o espaço de nomes do cluster do Kubernetes. Para clusters partilhados, use o espaço de nomesplatform. Para clusters padrão, use o espaço de nomes do projeto do cluster.TARGET_VERSION: a versão de destino da atualização identificada no passo anterior, como1.30.1000-gke.85.
O tempo médio de atualização de um cluster do Kubernetes demora aproximadamente 20 minutos.
Valide a atualização do cluster monitorizando o
UserClusterUpgradeRequestrecurso:kubectl --kubeconfig MANAGEMENT_API_SERVER \ describe userclusterupgraderequest CLUSTER_NAME \ -n CLUSTER_NAMESPACESubstitua o seguinte:
MANAGEMENT_API_SERVER: o caminho para o ficheiro kubeconfig do servidor da API de gestão.CLUSTER_NAME: o nome do cluster do Kubernetes a atualizar, comouser-vm-2.CLUSTER_NAMESPACE: o espaço de nomes do cluster do Kubernetes. Para clusters partilhados, use o espaço de nomesplatform. Para clusters padrão, use o espaço de nomes do projeto do cluster.
Inspecione a secção
Specdo resultado. ContémCurrent VersioneTarget Version. A atualização ainda está em curso se oCurrent Versione oTarget Versionforem diferentes.Spec: ... Current Version: 1.29.500-gke.60 Target Version: 1.30.1000-gke.85 Status: Conditions: - Message: Upgrade is in progress Reason: UpgradeInProgress Status: "False" Type: SucceededA atualização está concluída e é bem-sucedida quando a condição
Succeededtem o estadoTruee o valorCurrent Versioncorresponde ao valorTarget Version.Se a condição
Succeededtiver o estadoFalse, a atualização falhou. Se encontrar erros relacionados com a atualização do cluster do Kubernetes, contacte o grupo do operador de infraestrutura para receber assistência adicional.
Valide os subcomponentes do cluster após a atualização
Depois de atualizar com êxito o cluster do Kubernetes, recomendamos que confirme se todos os subcomponentes do cluster estão em bom estado.
Verifique se existem falhas de subcomponentes no cluster:
Verifique se existem subcomponentes que apresentem uma
ReconciliationErrormensagem:kubectl --kubeconfig MANAGEMENT_API_SERVER \ get subcomponent -n CLUSTER_NAME -o json | jq -r \ '.items[] | select(.status.conditions[]?.reason == "ReconciliationError") | select(.status.featureDisabled != true) | "Sub-Component: \(.metadata.name) - \(.status.conditions[]?.message)"'Se o resultado devolver quaisquer subcomponentes, contacte o seu grupo de operadores de infraestrutura para receber mais assistência.
Verifique se não existem subcomponentes que apresentem a mensagem
Reconciling:kubectl --kubeconfig MANAGEMENT_API_SERVER \ get subcomponent -n CLUSTER_NAME -o json | jq -r \ '.items[] | select(.status.conditions[]?.reason == "Reconciling") | select(.status.featureDisabled != true) | select( "\(.status)" | contains("PreinstallPending") | not) | "Sub-Component: \(.metadata.name) - \(.status.conditions[]?.message)"'Para clusters do Kubernetes com três nós do plano de controlo e três nós de trabalho, o tempo de atualização demora aproximadamente 20 minutos. Se continuar a ver subcomponentes no estado
Reconcilingapós 20 minutos, contacte o seu grupo de operadores de infraestrutura para receber assistência adicional.
O que se segue?
- Separação da carga de trabalho de design
- Faça a manutenção dos clusters do Kubernetes
- Faça a gestão dos node pools