このドキュメントでは、StatefulSet CSI 移行ツールを使用して、ステートフル ワークロードを in-tree vSphere ボリューム プラグインから Google Distributed Cloud の vSphere CSI ドライバに移行する方法について説明します。
次のリストに、このツールのリリース ステージ(バージョンごと)を示します。
- v1.0: GA
- v0.1: プレビュー
サポートされている Google Distributed Cloud のバージョン: 1.28~1.30。
概要
Google Distributed Cloud は、VMware ストレージ、vSphere ストレージ、Kubernetes in-tree Volume プラグイン(またはドライバ)、Container Storage Interface(CSI)ドライバを介して、外部ブロック ストレージまたはファイル ストレージ システムと統合されます。
1.15 で Kubernetes CSI 移行機能がデフォルトで有効になっている場合、in-tree vSphere ボリューム プラグインを基盤とする PersistentVolume は CSI のみの環境で引き続き機能します。CSI 移行機能によって、CSI ドライバに in-tree プラグイン オペレーション呼び出しがリダイレクトされます。PersistentVolume の仕様は不変であるため、in-tree プラグインによって引き続きサポートされます。使用可能な機能のセットは、in-tree ボリューム プラグインと同じです。
ボリューム拡張やボリューム スナップショットなどの CSI の完全な機能セットは、このようなボリュームでは使用できません。これらの機能を利用するには、vSphere CSI ドライバによってバックアップされる PersistentVolume を再作成して、ステートフル ワークロードを CSI に完全に移行する必要があります。CSI 移行ツールを使用してすると、ステートフル ワークロードを CSI に移行し、CSI 機能のフルセットを使用できます。
このツールを使用すると、StatefulSet の PersistentVolume と PersistentVolumeClaim を CSI にローリング移行できます。アプリケーションのダウンタイムは発生しません。このツールは、ローカル ディレクトリにある Kubernetes リソースのバックアップを取得し、移行前に ReclaimPolicy を Retain に設定します。そのため、データが失われることはありません。
制限
- 自動化ツールは、完全にサポートされている Google Distributed Cloud バージョンでのみサポートされます。 
- これは StatefulSet でのみ機能します。ツールを使用してプリフライト チェックを実行し、ツールを使用する前にいくつかの安全チェックを実行できます。 
./statefulset-csi-migration-tool preflight \
      --kubeconfig ADMIN_KUBECONFIG \
      --cluster-name USER_CLUSTER_NAME \
      --sts-name STS_NAME \
      --sts-namespace STS_NAMESPACE \
      --intree-storageclass INTREE_STORAGECLASS \
      --csi-storageclass CSI_STORAGECLASS
次のように置き換えます。
- ADMIN_KUBECONFIG: 管理クラスタの kubeconfig ファイルのパス。
- USER_CLUSTER_NAME: StatefulSet がユーザー クラスタで実行されている場合は、ユーザー クラスタの名前を指定します。ワークロードが管理クラスタで実行されている場合は、このフラグをスキップします。
- STS_NAME: StatefulSet の名前。
- STS_NAMESPACE: StatefulSet の Namespace。
- INTREE_STORAGECLASS: StatefulSet の PersistentVolume をバックアップする in-tree StorageClass 名。
- CSI_STORAGECLASS: 移行後に StatefulSet の PersistentVolume をバックアップする CSI StorageClass 名。
ダウンロード
gs://gke-on-prem-release/statefulset-csi-migration-tool/v1.0/statefulset-csi-migration-tool のツールをダウンロードします。このツールは現在プレビュー版です。
手順
このセクションでは、StatefulSet を vSphere in-tree vCP 内部プロビジョナー(kubernetes.io/vsphere-volume)から vSphere CSI プロビジョナー(csi.vsphere.vmware.com)に移行するために必要な手順について説明します。
./statefulset-csi-migration-tool rolling-migration all \
      --kubeconfig ADMIN_KUBECONFIG \
      --cluster-name USER_CLUSTER_NAME \
      --sts-name STS_NAME \
      --sts-namespace STS_NAMESPACE \
      --intree-storageclass INTREE_STORAGECLASS \
      --csi-storageclass CSI_STORAGECLASS \
      --working-directory WORKING_DIRECTORY
次のように置き換えます。
- ADMIN_KUBECONFIG: 管理クラスタの kubeconfig ファイルのパス。 
- USER_CLUSTER_NAME: StatefulSet がユーザー クラスタで実行されている場合は、ユーザー クラスタの名前を指定します。ワークロードが管理クラスタで実行されている場合は、このフラグをスキップします。 
- STS_NAME: StatefulSet の名前。 
- STS_NAMESPACE: StatefulSet の Namespace。 
- INTREE_STORAGECLASS: StatefulSet の PersistentVolume をバックアップする in-tree StorageClass 名。 
- CSI_STORAGECLASS: 移行後に StatefulSet の PersistentVolume をバックアップする CSI StorageClass 名。 
- WORKING_DIRECTORY: StatefulSet とその Pod、PersistentVolumeClaim、PersistentVolume の Kubernetes リソース仕様を保存するローカル ディレクトリ。ディレクトリ名は StatefulSet ごとに一意である必要があります。このディレクトリは空になっているか、存在しないはずです。ツールで作成されるように、、このディレクトリは作成しないことをおすすめします。 
このコマンドは、次のタスクを実行します。
- StatefulSet とその依存関係(PersistentVolume、PersistentVolumeClaim、Pod レプリカ仕様など)のバックアップをローカルの作業ディレクトリに作成します。 
- 孤立状態の削除ポリシーを使用して StatefulSet を削除します。このステップでは StatefulSet のみを削除しますが、Pod レプリカ、PersistentVolume、PersistentVolumeClaim などの依存関係は削除されません。 
- 各 Pod を CSI ドライバに移行し(オプション 1 と同様の方法)、次の処理を行います。 - a. PersistentVolume の ReclaimPolicy フィールドを「保持」として設定します。 - b. Pod、PersistentVolume、PersistentVolumeClaim を削除します。 - c. 既存の VMDK を FCD に変換します。 - d. PersistentVolume、PersistentVolumeClaim、Pod を再度作成します。 
- StatefulSet を再作成します。ただし、仕様の PVCTemplate フィールドは CSI StorageClass を指します。StatefulSet コントローラを孤立したレプリカに再度マッピングする必要があります。