這個階段會升級 Kubernetes 叢集的 Kubernetes 版本和外掛程式。
這個階段也會執行升級工作 mz-location-upgrade。
叢集升級作業一次只會在叢集的一個節點上執行。叢集升級的高階步驟如下:
- 系統會執行預檢,確保節點已準備好升級。
- 節點已排空,準備升級
- 節點上的 Kubernetes 版本會升級。
- 系統會執行後續檢查,確保節點升級成功。
- 節點的
InventoryMachine資源會從maintenance移除。這樣節點就能再次接受 Pod。
節點排空程序
排空節點時,系統會將該節點上執行的所有工作負載順利移出。包含下列步驟:
- 節點的
InventoryMachine資源會放在maintenance下方。 BaremetalMachine資源會放在maintenance下方。- Kubernetes 節點已遭汙染:
baremetal.cluster.gke.io/maintenance:NoSchedule - 如果是裸機節點,系統會為節點上執行的所有虛擬機器準備排空作業,方法是在
maintenance下方為該虛擬機器設定InventoryMachine。 - Kubernetes 節點上執行的 Pod 會按程序撤銷。每個 Pod 最多有 80 分鐘的時間可正常終止。
取得管理員叢集 kubeconfig、叢集名稱和命名空間
如要在此階段會診問題,您需要管理員叢集 KUBECONFIG,以及要升級的叢集名稱和命名空間。將 ORG_NAME 設為要監控升級作業的機構。
export ORG_NAME=ORG_NAME
根據階段名稱中指定的叢集,選取下列其中一個選項。
階段名稱:root-admin/AnthosBareMetal
export ADMIN_KUBECONFIG=ROOT_ADMIN_KUBECONFIG export CLUSTER_NAME="root-admin" export CLUSTER_NAMESPACE="root"階段名稱:org-admin/AnthosBareMetal
export ADMIN_KUBECONFIG=ROOT_ADMIN_KUBECONFIG export CLUSTER_NAME="${ORG_NAME}-admin" export CLUSTER_NAMESPACE="${ORG_NAME}"階段名稱:system/AnthosBareMetal
export ADMIN_KUBECONFIG=ORG_ADMIN_KUBECONFIG export CLUSTER_NAME="${ORG_NAME}-system" export CLUSTER_NAMESPACE="${CLUSTER_NAME}-cluster"階段名稱:service/AnthosBareMetal
export ADMIN_KUBECONFIG=ORG_ADMIN_KUBECONFIG export CLUSTER_NAME="g-${ORG_NAME}-shared-service" export CLUSTER_NAMESPACE="${CLUSTER_NAME}-cluster"升級使用者叢集
export ADMIN_KUBECONFIG=ORG_ADMIN_KUBECONFIG export CLUSTER_NAME=USER_CLUSTER_NAME export CLUSTER_NAMESPACE="${CLUSTER_NAME}-cluster"
要監控的資源
ABM 叢集資源 clusters.baremetal.cluster.gke.io
kubectl get cluster -n "${CLUSTER_NAMESPACE}" "${CLUSTER_NAME}" --kubeconfig=${ADMIN_KUBECONFIG}輸出範例
NAME ABM VERSION DESIRED ABM VERSION CLUSTER STATE root-admin 1.29.400-gke.86 1.29.400-gke.86 RunningABM BaremetalMachine 資源
kubectl get baremetalmachines -n "${CLUSTER_NAMESPACE}" --kubeconfig=${ADMIN_KUBECONFIG}輸出範例
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.86如果任何機器的
ABM VERSION與DESIRED ABM VERSION不同,或READY不等於true,請使用-o yaml標記取得機器的詳細資料。如果節點無法進入或退出維護模式,則會執行健康狀態檢查。
export MACHINE_IP=MACHINE_IP kubectl get healthchecks -n kube-system --kubeconfig=${ADMIN_KUBECONFIG}輸出範例
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 46m如果任何健康狀態檢查顯示為不健康,請使用
-o yaml旗標查看詳細資料。檢查控制器記錄是否有錯誤
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}檢查這個階段是否有任何執行中或失敗的升級工作。
export KUBECONFIG=ROOT_ADMIN_KUBECONFIG kubectl get upgradetaskrequests -n gpc-system -o json | jq '.items[] | select(.status.conditions[].status=="Unknown") | .metadata.name'輸出範例
"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 yaml輸出範例
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-7cf810d7a5如果輸出內容顯示正在執行的工作,您可以描述該工作或檢查 Pod 記錄檔是否有錯誤。