Este documento explica como atualizar a versão do Kubernetes de um cluster do Kubernetes isolado 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-alvo 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 o artigo Públicos-alvo da documentação do GDC isolado.
Antes de começar
Para concluir as tarefas neste documento, tem de pedir as autorizações necessárias e preparar o seu ambiente.
Peça funções de IAM
Tem de ter funções específicas para receber as autorizações de que precisa para atualizar o seu cluster do Kubernetes. Tem de pedir funções com âmbito no seu projeto e organização.
Funções na organização
Para listar as versões de atualização disponíveis para um cluster do Kubernetes, peça ao administrador de IAM da organização para lhe conceder a função Administrador do cluster do utilizador (user-cluster-admin). Esta função não está associada a um espaço de nomes.
Se gerir um cluster padrão e não conseguir receber a função Administrador do cluster do utilizador 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.
Funções do projeto
Para criar, eliminar, editar ou ver atualizações de clusters, peça ao administrador de IAM do projeto para lhe conceder a função Administrador do cluster padrão (standard-cluster-admin). Esta função está associada ao espaço de nomes do projeto.
Prepare o seu ambiente
Para executar comandos num cluster do Kubernetes através da API, certifique-se de que tem os seguintes recursos:
Localize o nome do cluster do Kubernetes ou pergunte a um membro do grupo de administradores da plataforma qual é o nome do cluster.
Use o nome do cluster do Kubernetes para substituir
CLUSTER_NAMEnestas instruções.Inicie sessão e gere o ficheiro kubeconfig para o servidor da API de gestão.
Use o caminho kubeconfig do servidor da API de gestão para substituir
MANAGEMENT_API_SERVERnestas instruções.
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 das versões do Kubernetes disponíveis:
TARGET_VERSION 1.30.1000-gke.85Anote a 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 recurso
UserClusterUpgradeRequest: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 é de, aproximadamente, 20 minutos.
Valide a atualização do cluster monitorizando o recurso
UserClusterUpgradeRequest: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.
Analise a secção
Specda saída. ContémCurrent VersioneTarget Version. A atualização ainda está em curso se aCurrent Versione aTarget 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 foi bem-sucedida quando a condição
Succeededtem o estadoTruee aCurrent Versioncorresponde àTarget 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 de operadores de infraestrutura para receber mais assistência.
Valide os subcomponentes do cluster após a atualização
Depois de o cluster do Kubernetes ser atualizado com êxito, recomendamos que confirme que todos os subcomponentes do cluster estão em bom estado.
Verifique se existem falhas de subcomponentes no cluster:
Valide se não existem subcomponentes que apresentem uma mensagem
ReconciliationError: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 a saída devolver subcomponentes, contacte o grupo de operadores de infraestrutura para receber mais assistência.
Valide se não existem subcomponentes que apresentem uma 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 é de, aproximadamente, 20 minutos. Se continuar a ver subcomponentes no estado
Reconcilingapós 20 minutos, contacte o grupo de operadores de infraestrutura para receber mais assistência.
O que se segue?
- Crie a separação da carga de trabalho
- Faça a manutenção dos clusters do Kubernetes
- Faça a gestão de conjuntos de nós