このドキュメントでは、Google Distributed Cloud(GDC)エアギャップ Kubernetes クラスタの Kubernetes バージョンをアップグレードする方法について説明します。クラスタに最新の Kubernetes の機能と修正が組み込まれるように、クラスタの定期的なアップグレードを計画する必要があります。
このドキュメントは、組織内の Kubernetes リソースの管理を担当する、プラットフォーム管理者グループ内の IT 管理者、セキュリティ エンジニア、ネットワーク管理者などを対象としています。詳細については、 GDC エアギャップ ドキュメントの 対象読者をご覧ください。
始める前に
このドキュメントの手順を完了するには、必要な権限をリクエストして環境を準備する必要があります。
IAM ロールをリクエストする
Kubernetes クラスタをアップグレードするために必要な権限を取得するには、特定のロールが必要です。プロジェクトと組織にスコープ設定されたロールをリクエストする必要があります。
組織のロール
Kubernetes クラスタで使用可能なアップグレード バージョンを一覧表示するには、組織 IAM 管理者にユーザー クラスタ管理者
(user-cluster-admin)ロールの付与を依頼してください。このロールは Namespace にバインドされていません。
Standard クラスタを管理していて、プラットフォーム管理者グループからユーザー クラスタ管理者ロールを取得できない場合は、使用可能な Kubernetes アップグレード バージョンのリストを提供するよう依頼する必要があります。
プロジェクトのロール
クラスタのアップグレードを作成、削除、編集、表示するには、プロジェクト IAM 管理者にStandard
クラスタ管理者(standard-cluster-admin)ロールの付与を依頼してください。このロールはプロジェクト
Namespace にバインドされています。
環境を準備する
API を使用して Kubernetes クラスタ に対してコマンドを実行するには、次のリソースが必要です。
gdcloud CLIをダウンロードして インストールします。
Kubernetes クラスタ名を確認するか、プラットフォーム管理者グループのメンバーにクラスタ名を確認します。
Kubernetes クラスタ名を使用して、この手順の
CLUSTER_NAMEを置き換えます。ログインして Management API サーバーの kubeconfig ファイルを生成します。
管理 API サーバーの kubeconfig パスを使用して、この手順の
MANAGEMENT_API_SERVERを置き換えます。
Kubernetes クラスタをアップグレードする
UserClusterUpgradeRequest
API を使用して、既存の Kubernetes クラスタをアップグレードします。
API を使用して Kubernetes クラスタをアップグレードする手順は次のとおりです。
UserClusterMetadataオブジェクトのkubernetesVersion値を出力して、使用可能な Kubernetes アップグレード バージョンを一覧表示します。kubectl --kubeconfig MANAGEMENT_API_SERVER \ get userclustermetadata -o=custom-columns='TARGET_VERSION:.spec.kubernetesVersion'MANAGEMENT_API_SERVERは、管理 API サーバーの kubeconfig ファイルのパスに置き換えます。このコマンドは、使用可能な Kubernetes バージョンのリストを返します。
TARGET_VERSION 1.30.1000-gke.85前の出力から、クラスタのアップグレード先の Kubernetes バージョンをメモします。次のステップでアップグレード リクエストに指定する
targetVersionは、使用可能なバージョンのいずれかである必要があります。UserClusterUpgradeRequestリソースを作成して、クラスタのアップグレードをリクエストします。kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF apiVersion: cluster.gdc.goog/v1 kind: UserClusterUpgradeRequest metadata: name: CLUSTER_NAME namespace: CLUSTER_NAMESPACE spec: clusterRef: name: CLUSTER_NAME targetVersion: TARGET_VERSION EOF次のように置き換えます。
MANAGEMENT_API_SERVER: Management API サーバーの kubeconfig ファイルのパス。CLUSTER_NAME: アップグレードする Kubernetes クラスタの名前(user-vm-2など)。CLUSTER_NAMESPACE: Kubernetes クラスタの Namespace。共有クラスタの場合は、platformNamespace を使用します。 Standard クラスタの場合は、クラスタのプロジェクト Namespace を使用します。TARGET_VERSION: 前のステップで特定したアップグレードのターゲット バージョン(1.30.1000-gke.85など)。
Kubernetes クラスタの平均アップグレード時間は約 20 分です。
UserClusterUpgradeRequestリソースをモニタリングして、クラスタのアップグレードを確認します。kubectl --kubeconfig MANAGEMENT_API_SERVER \ describe userclusterupgraderequest CLUSTER_NAME \ -n CLUSTER_NAMESPACE次のように置き換えます。
MANAGEMENT_API_SERVER: Management API サーバーの kubeconfig ファイルのパス。CLUSTER_NAME: アップグレードする Kubernetes クラスタの名前(user-vm-2など)。CLUSTER_NAMESPACE: Kubernetes クラスタの Namespace。共有クラスタの場合は、platformNamespace を使用します。 Standard クラスタの場合は、クラスタのプロジェクト Namespace を使用します。
出力の
Specセクションを確認します。Current VersionとTarget Versionが含まれています。Current VersionとTarget Versionが異なる場合、アップグレードはまだ進行中です。Spec: ... Current Version: 1.29.500-gke.60 Target Version: 1.30.1000-gke.85 Status: Conditions: - Message: Upgrade is in progress Reason: UpgradeInProgress Status: "False" Type: SucceededSucceeded条件のステータスがTrueで、Current VersionがTarget Versionと一致すると、アップグレードは完了し、成功します。Succeeded条件のステータスがFalseの場合、アップグレードは失敗しています。Kubernetes クラスタのアップグレードに関連するエラーが発生した場合は、インフラストラクチャ オペレーター グループにお問い合わせください。
アップグレード後にクラスタのステータスを確認する
Kubernetes クラスタがアップグレードされたら、Cluster リソースのステータスを確認して、クラスタとそのコンポーネントが正常であることを確認します。
Clusterリソースのstatus.conditionsフィールドとstatus.componentsConditionsフィールドを表示します。kubectl --kubeconfig MANAGEMENT_API_SERVER \ get cluster CLUSTER_NAME \ -n CLUSTER_NAMESPACE -o yaml次のように置き換えます。
MANAGEMENT_API_SERVER: Management API サーバーの kubeconfig ファイルのパス。CLUSTER_NAME: Kubernetes クラスタの名前(user-vm-2など)。CLUSTER_NAMESPACE: Kubernetes クラスタの Namespace。共有クラスタの場合は、platformNamespace を使用します。 Standard クラスタの場合は、クラスタのプロジェクト Namespace を使用します。
出力の
statusセクションで、次のことを確認します。status.conditionsで、Ready条件のstatusがTrueで、Reconciling条件のstatusがFalseであることを確認します。status.componentsConditionsで、Ready条件のstatusがTrue、Reconciling条件のstatusがFalseであり、reasonがReconciliationErrorまたはReconcilingを示す条件がないことを確認します。
コントロール プレーン ノードが 3 つ、ワーカーノードが 3 つある Kubernetes クラスタの場合、アップグレードには約 20 分かかります。20 分経過してもクラスタまたはそのコンポーネントが
Reconciling状態のままの場合、または条件にReconciliationErrorが表示される場合は、インフラストラクチャ オペレーター グループにお問い合わせください。