Esta etapa faz upgrade da versão do Kubernetes e dos complementos de um cluster do Kubernetes.
Essa etapa também executa uma tarefa de upgrade mz-location-upgrade.
O upgrade do cluster é realizado em um nó por vez. As etapas gerais do upgrade do cluster são as seguintes:
- As verificações de simulação são executadas para garantir que o nó esteja pronto para o upgrade.
- O nó é esvaziado para se preparar para o upgrade
- A versão do Kubernetes no nó é atualizada.
- As verificações pós-voo são executadas para garantir que o upgrade do nó seja bem-sucedido.
- O recurso
InventoryMachinedo nó é removido demaintenance. Isso permite que o nó fique pronto para aceitar pods novamente.
Processo de drenagem de nós
A remoção de um nó envolve a movimentação sem problemas de todas as cargas de trabalho em execução nele. Ele consiste nas seguintes etapas:
- O recurso
InventoryMachinedo nó é colocado emmaintenance. - O recurso
BaremetalMachineé colocado emmaintenance. - O nó do Kubernetes está corrompido 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 o encerramento definindo o
InventoryMachinepara essa máquina virtual emmaintenance. - Os pods em execução no nó do Kubernetes são removidos normalmente. Cada pod tem até 80 minutos para ser encerrado normalmente.
Receber o kubeconfig, o nome e o namespace do cluster de administrador
Para triar problemas nessa etapa, você precisa do KUBECONFIG do cluster de administrador e do nome e namespace do cluster em upgrade. Defina ORG_NAME como a organização para a qual você está monitorando a atualização.
export ORG_NAME=ORG_NAME
Selecione uma das opções a seguir com base no cluster especificado no nome da etapa.
Nome da etapa: root-admin/AnthosBareMetal
export ADMIN_KUBECONFIG=ROOT_ADMIN_KUBECONFIG export CLUSTER_NAME="root-admin" export CLUSTER_NAMESPACE="root"Nome da etapa: 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"Nome da etapa: service/AnthosBareMetal
export ADMIN_KUBECONFIG=ORG_ADMIN_KUBECONFIG export CLUSTER_NAME="g-${ORG_NAME}-shared-service" export CLUSTER_NAMESPACE="${CLUSTER_NAME}-cluster"Upgrade do cluster de usuário
export ADMIN_KUBECONFIG=ORG_ADMIN_KUBECONFIG export CLUSTER_NAME=USER_CLUSTER_NAME export CLUSTER_NAMESPACE="${CLUSTER_NAME}-cluster"
Recursos a serem monitorados
Recurso de cluster do ABM clusters.baremetal.cluster.gke.io
kubectl get cluster -n "${CLUSTER_NAMESPACE}" "${CLUSTER_NAME}" --kubeconfig=${ADMIN_KUBECONFIG}Exemplo de saída
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 saída
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 mostrar
ABM VERSIONdiferente deDESIRED ABM VERSIONouREADYnão for igual atrue, use a flag-o yamlpara 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 saída
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 integridade aparecer como não íntegra, use a flag
-o yamlpara conferir os detalhes.Registros do controlador para verificar se há 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 há tarefas de upgrade em execução ou com falha nesta etapa.
export KUBECONFIG=ROOT_ADMIN_KUBECONFIG kubectl get upgradetaskrequests -n gpc-system -o json | jq '.items[] | select(.status.conditions[].status=="Unknown") | .metadata.name'Exemplo de saída
"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 saída
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 você encontrar um job em execução na saída, descreva o job ou verifique os registros do pod em busca de erros.