このステージでは、Kubernetes クラスタの Kubernetes バージョンとアドオンがアップグレードされます。このステージでは、アップグレード タスク mz-location-upgrade も実行されます。
クラスタのアップグレードは、クラスタの 1 つのノードで一度に実行されます。クラスタ アップグレードの大まかな手順は次のとおりです。
- プリフライト チェックが実行され、ノードのアップグレードの準備が整っていることが確認されます。
- アップグレードの準備のためにノードがドレインされます
- ノードの Kubernetes バージョンがアップグレードされます。
- ノードのアップグレードが正常に完了したことを確認するために、フライト後チェックが実行されます。
- ノードの
InventoryMachineリソースがmaintenanceから削除されます。これにより、ノードは Pod を再び受け入れる準備が整います。
ノードのドレイン プロセス
ノードのドレインとは、そのノードで実行されているすべてのワークロードをそのノードから正常に移動することです。これは次のステップで構成されます。
- ノードの
InventoryMachineリソースはmaintenanceの下に配置されます。 BaremetalMachineリソースはmaintenanceの下に配置されます。- Kubernetes ノードが
baremetal.cluster.gke.io/maintenance:NoScheduleで taint されている - ベアメタルノードの場合、ノードで実行されている仮想マシンは、
maintenanceでその仮想マシンのInventoryMachineを設定することで、ドレインの準備が整います。 - Kubernetes ノードで実行されている Pod は正常に強制排除されます。各 Pod には、正常に終了するまでに最大 80 分が与えられます。
管理クラスタの kubeconfig、クラスタ名、Namespace を取得する
このステージの問題をトリアージするには、管理クラスタの KUBECONFIG と、アップグレード中のクラスタの名前と Namespace が必要です。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.86ABM 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 ログでエラーを確認します。