StatefulSet CSI 移行ツールの使用

このドキュメントでは、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 リソースのバックアップを取得し、移行前に ReclaimPolicyRetain に設定します。そのため、データが失われることはありません。

制限

  • 自動化ツールは、完全にサポートされている 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 ごとに一意である必要があります。このディレクトリは空になっているか、存在しないはずです。ツールで作成されるように、、このディレクトリは作成しないことをおすすめします。

このコマンドは、次のタスクを実行します。

  1. StatefulSet とその依存関係(PersistentVolume、PersistentVolumeClaim、Pod レプリカ仕様など)のバックアップをローカルの作業ディレクトリに作成します。

  2. 孤立状態の削除ポリシーを使用して StatefulSet を削除します。このステップでは StatefulSet のみを削除しますが、Pod レプリカ、PersistentVolume、PersistentVolumeClaim などの依存関係は削除されません。

  3. 各 Pod を CSI ドライバに移行し(オプション 1 と同様の方法)、次の処理を行います。

    a. PersistentVolume の ReclaimPolicy フィールドを「保持」として設定します。

    b. Pod、PersistentVolume、PersistentVolumeClaim を削除します。

    c. 既存の VMDK を FCD に変換します。

    d. PersistentVolume、PersistentVolumeClaim、Pod を再度作成します。

  4. StatefulSet を再作成します。ただし、仕様の PVCTemplate フィールドは CSI StorageClass を指します。StatefulSet コントローラを孤立したレプリカに再度マッピングする必要があります。