vSphere Container Storage Interface ドライバの使用

このドキュメントでは、Google Distributed Cloud で vSphere Container Storage Interface(CSI)ドライバを使用する方法について説明します。

概要

vSphere CSI ドライバは、VMware 用 Google Distributed Cloud(ソフトウェアのみ)をインストールするときに自動的にデプロイされます。他の CSI ドライバの使用について詳しくは、CSI ドライバのインストールをご覧ください。

vSphere の要件

vSphere CSI ドライバを使用するための前提条件は次のとおりです。

ボリュームの拡張

  • オフラインでボリュームの拡張を行うには、vCenter Server と ESXi の両方がバージョン 7.0 Update 1 以降である必要があります。

  • オンラインでのボリュームの拡張では、vCenter Server と ESXi の両方がバージョン 7.0 Update 2 以降である必要があります。

ボリューム スナップショット

ボリューム スナップショットを使用する場合、vCenter Server と ESXi の両方がバージョン 7.0 Update 3 以降である必要があります。

Cns.Searchable

vCenter ユーザー アカウントに、ルート vCenter オブジェクトに対する Cns.Searchable 権限が必要です。

アカウントが CSI の前提条件を満たしているかが不明な場合は、CSI ワークロードをデプロイする前に gkectl diagnose cluster を実行します。

ドライバがインストールされていることを確認する

ユーザー クラスタに vSphere CSI ドライバをインストールすると、standard-rwo という StorageClass が作成されます。

StorageClass オブジェクトを一覧表示します。

kubectl --kubeconfig CLUSTER_KUBECONFIG get storageclass

CLUSTER_KUBECONFIG は、クラスタの kubeconfig ファイルのパスに置き換えます。

出力に standard-rwo が表示されていることを確認します。次に例を示します。

standard                 kubernetes.io/vsphere-volume  Delete   Immediate     false      33m
standard-rwo (default)   csi.vsphere.vmware.com    Delete   Immediate     true       32m

vSphere CSI ドライバがインストールされていることを確認します。

kubectl --kubeconfig CLUSTER_KUBECONFIG get csinode \
    -o="custom-columns=NAME:metadata.name,DRIVERS:spec.drivers[].name"

ドライバがすべてのクラスタノードで使用可能になっていることが出力に示されるはずです。次に例を示します。

NAME     DRIVERS
node-0   csi.vsphere.vmware.com
node-1   csi.vsphere.vmware.com
node-2   csi.vsphere.vmware.com

ボリュームのプロビジョニング

vSphere CSI ドライバでボリュームをプロビジョニングするには、PersistentVolumeClaimstorageClassName フィールドを standard-rwo に設定します。

デフォルトのストレージ クラスの設定

standard-rwo をデフォルトのストレージ クラスとして設定するには、デフォルトのストレージ クラスをご覧ください。

スナップショットを使用してボリュームを復元する

スナップショットからボリュームを復元するをご覧ください。

StorageClass の追加作成

追加の vSphere CSI StorageClass は、datastoreurl パラメータまたは storagepolicyname パラメータを使用してクラスタに作成できます。

次の例では、storagepolicyname パラメータを使用しています。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: gold
parameters:
  csi.storage.k8s.io/fstype: ext4
  storagepolicyname: "Gold Policy"
provisioner: csi.vsphere.vmware.com

datastoreurl パラメータに対する正確な値を確認するには、次のコマンドを実行します。

govc datastore.info DATASTORE_NAME

DATASTORE_NAME は、vSphere データストアの名前に置き換えます。

datastoreurl には、出力の URL の値を使用します。出力例を以下に示します。

Name:        DATASTORE_NAME
  Path:      /DATACENTER_NAME/datastore/DATASTORE_NAME
  Type:      VMFS
  URL:       ds:///vmfs/volumes/5d864fa0-7f2184d4-8eb4-3cfdfe0ce9a0/
  Capacity:  20479.8 GB
  Free:      10066.9 GB

ボリュームのクリーンアップ

ユーザー クラスタを削除しても、vSphere CSI ドライバによってプロビジョニングされたボリュームは削除されません。すべての PVC と StatefulSet を削除した後、クラスタを削除する必要があります。ボリュームを削除するには、次のコマンドを実行します。

kubectl delete statefulsets,persistentvolumeclaims --namespace=MY_NAMESPACE --all

MY_NAMESPACE は、Kubernetes Namespace に置き換えます。

ボリュームを削除せずにユーザー クラスタを削除した場合は、vSphere のユーザー インターフェースでボリュームを見つけることができます。

  1. データストアを選択

  2. [Monitor] > [Cloud Native Storage] > [Container Volumes] に移動します。

  3. 各ボリュームの [Details] セクションに、Kubernetes クラスタ名が表示されます。

vSphere CSI ドライバの無効化

vSphere CSI のサポートを削除するには、ユーザー クラスタ構成に次の行を追加します。

# (Optional) Storage specification for the cluster storage:
# To disable the vSphere CSI driver, set this to true. The value is set to false by default and 
# the vSphere CSI driver is enabled by default on vSphere version >= 6.7U3.
  vSphereCSIDisabled: true

次のステップ