Questa fase esegue l'upgrade della versione di Kubernetes e degli add-on per un cluster Kubernetes.
Questa fase esegue anche un'attività di upgrade mz-location-upgrade.
L'upgrade del cluster viene eseguito su un nodo del cluster alla volta. I passaggi generali dell'upgrade del cluster sono i seguenti:
- Vengono eseguiti controlli preflight per assicurarsi che il nodo sia pronto per l'upgrade.
- Il nodo viene svuotato per prepararsi all'upgrade
- Viene eseguito l'upgrade della versione di Kubernetes sul nodo.
- Vengono eseguiti controlli post-volo per garantire che l'upgrade del nodo vada a buon fine.
- La risorsa
InventoryMachineper il nodo viene rimossa damaintenance. In questo modo, il nodo è di nuovo pronto ad accettare i pod.
Procedura di svuotamento del nodo
L'eliminazione di un nodo comporta lo spostamento controllato di tutti i workload in esecuzione sul nodo. Consiste nei seguenti passaggi:
- La risorsa
InventoryMachineper il nodo si trova inmaintenance. - La risorsa
BaremetalMachineviene inserita inmaintenance. - Il nodo Kubernetes è contrassegnato con
baremetal.cluster.gke.io/maintenance:NoSchedule - Per i nodi bare metal, tutte le macchine virtuali in esecuzione sul nodo vengono preparate per l'arresto impostando
InventoryMachineper quella macchina virtuale inmaintenance. - I pod in esecuzione sul nodo Kubernetes vengono rimossi in modo controllato. A ogni pod vengono concessi fino a 80 minuti per l'arresto controllato.
Recupera il kubeconfig, il nome del cluster e lo spazio dei nomi del cluster di amministrazione
Per eseguire la classificazione dei problemi in questa fase, devi disporre di KUBECONFIG del cluster di amministrazione e del nome e dello spazio dei nomi del cluster in fase di upgrade. Imposta ORG_NAME sull'organizzazione per cui stai monitorando l'upgrade.
export ORG_NAME=ORG_NAME
Seleziona una delle seguenti opzioni in base al cluster specificato nel nome della fase.
Stage Name: root-admin/AnthosBareMetal
export ADMIN_KUBECONFIG=ROOT_ADMIN_KUBECONFIG export CLUSTER_NAME="root-admin" export CLUSTER_NAMESPACE="root"Nome d'arte: 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"Upgrade del cluster utente
export ADMIN_KUBECONFIG=ORG_ADMIN_KUBECONFIG export CLUSTER_NAME=USER_CLUSTER_NAME export CLUSTER_NAMESPACE="${CLUSTER_NAME}-cluster"
Risorse da monitorare
ABM Cluster resource clusters.baremetal.cluster.gke.io
kubectl get cluster -n "${CLUSTER_NAMESPACE}" "${CLUSTER_NAME}" --kubeconfig=${ADMIN_KUBECONFIG}Output di esempio
NAME ABM VERSION DESIRED ABM VERSION CLUSTER STATE root-admin 1.29.400-gke.86 1.29.400-gke.86 RunningRisorse ABM BaremetalMachine
kubectl get baremetalmachines -n "${CLUSTER_NAMESPACE}" --kubeconfig=${ADMIN_KUBECONFIG}Output di esempio
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 una macchina mostra
ABM VERSIONdiverso daDESIRED ABM VERSIONoREADYdiverso datrue, utilizza il flag-o yamlper ottenere maggiori dettagli sulla macchina.HealthChecks se un nodo non riesce a entrare o uscire dalla modalità di manutenzione.
export MACHINE_IP=MACHINE_IP kubectl get healthchecks -n kube-system --kubeconfig=${ADMIN_KUBECONFIG}Output di esempio
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 un controllo di integrità viene visualizzato come non integro, utilizza il flag
-o yamlper controllare i dettagli.Log del controller per verificare la presenza di errori
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}Controlla se in questa fase sono presenti attività di upgrade in esecuzione o non riuscite.
export KUBECONFIG=ROOT_ADMIN_KUBECONFIG kubectl get upgradetaskrequests -n gpc-system -o json | jq '.items[] | select(.status.conditions[].status=="Unknown") | .metadata.name'Output di esempio
"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 yamlOutput di esempio
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 nell'output vedi un job in esecuzione, puoi descriverlo o controllare i log dei pod per individuare eventuali errori.