Esta fase atualiza a versão do Kubernetes e os suplementos de um cluster do Kubernetes.
Esta fase também executa uma tarefa de atualização mz-location-upgrade.
A atualização do cluster é realizada num nó do cluster de cada vez. Os passos de alto nível na atualização do cluster são os seguintes:
- São executadas verificações pré-voo para garantir que o nó está pronto para a atualização.
- O nó é esvaziado para se preparar para a atualização
- A versão do Kubernetes no nó é atualizada.
- As verificações pós-voo são executadas para garantir que a atualização do nó é bem-sucedida.
- O recurso
InventoryMachinepara o nó é removido demaintenance. Isto permite que o nó fique pronto para aceitar novamente pods.
Processo de esvaziamento de nós
A drenagem de um nó envolve a movimentação gradual de todas as cargas de trabalho em execução nesse nó para fora do mesmo. Consiste nos seguintes passos:
- O recurso
InventoryMachinedo nó é colocado emmaintenance. - O recurso
BaremetalMachineé colocado emmaintenance. - O nó do Kubernetes está contaminado com
baremetal.cluster.gke.io/maintenance:NoSchedule - Para nós bare metal, todas as máquinas virtuais em execução no nó são preparadas para a drenagem definindo o
InventoryMachinepara essa máquina virtual emmaintenance. - Os pods em execução no nó do Kubernetes são removidos de forma elegante. Cada pod tem até 80 minutos para terminar normalmente.
Obtenha o kubeconfig, o nome do cluster e o namespace do cluster de administrador
Para resolver problemas nesta fase, precisa do KUBECONFIG do cluster de administrador, bem como do nome e do espaço de nomes do cluster em atualização. Defina ORG_NAME para a organização para a qual está a monitorizar a atualização.
export ORG_NAME=ORG_NAME
Selecione uma das seguintes opções com base no cluster especificado no nome da fase.
Stage Name: root-admin/AnthosBareMetal
export ADMIN_KUBECONFIG=ROOT_ADMIN_KUBECONFIG export CLUSTER_NAME="root-admin" export CLUSTER_NAMESPACE="root"Stage Name: org-admin/AnthosBareMetal
export ADMIN_KUBECONFIG=ROOT_ADMIN_KUBECONFIG export CLUSTER_NAME="${ORG_NAME}-admin" export CLUSTER_NAMESPACE="${ORG_NAME}"Stage Name: system/AnthosBareMetal
export ADMIN_KUBECONFIG=ORG_ADMIN_KUBECONFIG export CLUSTER_NAME="${ORG_NAME}-system" export CLUSTER_NAMESPACE="${CLUSTER_NAME}-cluster"Stage Name: service/AnthosBareMetal
export ADMIN_KUBECONFIG=ORG_ADMIN_KUBECONFIG export CLUSTER_NAME="g-${ORG_NAME}-shared-service" export CLUSTER_NAMESPACE="${CLUSTER_NAME}-cluster"Atualização do cluster de utilizadores
export ADMIN_KUBECONFIG=ORG_ADMIN_KUBECONFIG export CLUSTER_NAME=USER_CLUSTER_NAME export CLUSTER_NAMESPACE="${CLUSTER_NAME}-cluster"
Recursos a monitorizar
ABM Cluster resource clusters.baremetal.cluster.gke.io
kubectl get cluster -n "${CLUSTER_NAMESPACE}" "${CLUSTER_NAME}" --kubeconfig=${ADMIN_KUBECONFIG}Exemplo de resultado
NAME ABM VERSION DESIRED ABM VERSION CLUSTER STATE root-admin 1.29.400-gke.86 1.29.400-gke.86 RunningRecursos ABM BaremetalMachine
kubectl get baremetalmachines -n "${CLUSTER_NAMESPACE}" --kubeconfig=${ADMIN_KUBECONFIG}Exemplo de resultado
NAME CLUSTER READY INSTANCEID MACHINE ABM VERSION DESIRED ABM VERSION 10.8.0.2 root-admin true baremetal://10.8.0.2 10.8.0.2 1.29.400-gke.86 1.29.400-gke.86 10.8.0.3 root-admin true baremetal://10.8.0.3 10.8.0.3 1.29.400-gke.86 1.29.400-gke.86 10.8.0.4 root-admin true baremetal://10.8.0.4 10.8.0.4 1.29.400-gke.86 1.29.400-gke.86Se alguma máquina apresentar um valor
ABM VERSIONdiferente deDESIRED ABM VERSIONouREADYnão for igual atrue, use a flag-o yamlpara obter mais detalhes sobre a máquina.Verifica se um nó não consegue entrar ou sair do modo de manutenção.
export MACHINE_IP=MACHINE_IP kubectl get healthchecks -n kube-system --kubeconfig=${ADMIN_KUBECONFIG}Exemplo de resultado
NAMESPACE NAME COMPONENT NAMESPACE STATUS LAST_COMPLETED kube-system bm-system-10.8.0.2-machine Healthy 14m kube-system bm-system-10.8.0.3-machine Healthy 14m kube-system bm-system-10.8.0.4-machine Healthy 5m43s kube-system bm-system-add-ons-add-ons Healthy 46m kube-system bm-system-add-ons-configdrift Healthy 46mSe alguma verificação de funcionamento for apresentada como não saudável, use a flag
-o yamlpara verificar os detalhes.Registos do controlador para verificar se existem erros
export MACHINE_IP=MACHINE_IP kubectl logs -n kube-system -l baremetal.cluster.gke.io/lifecycle-controller-component=true | grep ${MACHINE_IP} kubectl logs -n capi-system -l baremetal.cluster.gke.io/lifecycle-controller-component=true | grep ${MACHINE_IP}Verifique se existem tarefas de atualização em execução ou com falhas nesta fase.
export KUBECONFIG=ROOT_ADMIN_KUBECONFIG kubectl get upgradetaskrequests -n gpc-system -o json | jq '.items[] | select(.status.conditions[].status=="Unknown") | .metadata.name'Exemplo de resultado
"upg-task-org-1-os-node-upgrade-task-whg8v"export KUBECONFIG=ROOT_ADMIN_KUBECONFIG export UPGRADE_TASK=$(kubectl get upgradetaskrequests -n gpc-system -o json | jq -r '.items[] | select(.status.conditions[].status=="Unknown") | .metadata.name') kubectl get upgradetaskrequests -n gpc-system "${UPGRADE_TASK}" -o yamlExemplo de resultado
status: conditions: - lastTransitionTime: "2024-09-25T16:26:33Z" message: job gpc-system/v1.13.0-os-7cf810d7a5-upg-task-org-1-os-node-upgra-4n5t6 is running observedGeneration: 1 reason: JobRunning status: Unknown type: Succeeded upgradeTaskResponse: name: upg-task-org-1-os-node-upgrade-task-whg8v-v1.13.0-os-7cf810d7a5Se vir uma tarefa em execução no resultado, pode descrever a tarefa ou verificar os registos do pod para ver se existem erros.