このドキュメントでは、StatefulSet CSI 移行ツールを使用して、ステートフル ワークロードを in-tree vSphere ボリューム プラグインから Google Distributed Cloud の vSphere CSI ドライバに移行する方法について説明します。
概要
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/v0.1/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 コントローラを孤立したレプリカに再度マッピングする必要があります。