VMware 用の Google Distributed Cloud(ソフトウェアのみ)で作成されたユーザー クラスタには、1 つ以上の StorageClass オブジェクトがあり、そのうちの 1 つがデフォルトの StorageClass として指定されます。このページでは、ユーザー クラスタのデフォルトの StorageClass を設定する方法について説明します。詳細については、ストレージをご覧ください。
このページは、ストレージのパフォーマンス、使用状況、費用を構成および管理するストレージ スペシャリストを対象としています。Google Cloud のコンテンツで参照する一般的なロールとタスク例の詳細については、一般的な GKE Enterprise ユーザーロールとタスクをご覧ください。
デフォルトの StorageClass を確認する
すべての StorageClass を一覧取得します。
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get storageclasses
出力で、どの StorageClass がデフォルトであるかを確認できます。たとえば、次の出力では、standard-rwo
という名前の StorageClass がデフォルトの StorageClass であることがわかります。
standard kubernetes.io/vsphere-volume standard-rwo (default) csi.vsphere.vmware.com
ストレージをリクエストするときに、StorageClass を指定できます。StorageClass を指定しない場合は、デフォルトの StorageClass が使用されます。たとえば、StorageClass を指定しない PersistentVolumeClaim を作成したとします。ボリューム コントローラは、デフォルトの StorageClass に従ってクレームを処理します。
デフォルトの StorageClass の変更
クラスタ管理者として、デフォルトのストレージ クラスを変更できます。StorageClass を指定しないストレージに対するすべての要求は、選択した StorageClass に従って処理されます。このセクションでは、デフォルトを変更する手順について説明します。
新しいストレージ システムのデプロイ
新しいストレージ メカニズムと、その新しいストレージ メカニズムを Kubernetes クラスタに統合するためのソフトウェア コンポーネントをデプロイします。たとえば、クラスタへの CSI ドライバのインストールが必要な場合があります。
この手順は、使用しているストレージ ベンダーによって異なります。CSI ドライバの場合、ベンダーは、CSI ドライバを Kubernetes クラスタにデプロイする手順を提供する必要があります。CSI ドライバのドキュメントには、StorageClass に指定するドライバ固有のパラメータ(プロビジョナー名など)を含めます。
新しいアプライアンスの StorageClass を作成するときは、その背後にある特定のドライバやアプライアンスの名前ではなく、そのプロパティ(「高速」や「複製度の高さ」など)をベースとして StorageClass に名前を付けます。これにより、クラスタと環境全体で一貫したストレージ ポリシーが簡単になります。
デフォルトの StorageClass からデフォルトのアノテーションを削除する
デフォルトの StorageClass をテキスト エディタで開きます。
kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] edit storageclass \ DEFAULT_STORAGE_CLASS
テキスト エディタで、storageclass.kubernetes.io/is-default-class: "true"
アノテーションを削除します。テキスト エディタを閉じます。
アノテーションが削除されたことを確認するには、次のコマンドを入力します。
kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] get storageclass \ DEFAULT_STORAGE_CLASS --output yaml
新しい StorageClass を作成する
新しい StorageClass のマニフェストを作成します。storageclass.kubernetes.io/is-default-class: "true"
アノテーション含めます。例:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: annotations: storageclass.kubernetes.io/is-default-class: "true" ... name: my-storage-class ... parameters: ... provisioner: [MY_PROVISIONER] ...
マニフェストを YAML ファイルとして保存し、新しい StorageClass を作成します。
kubectl --kubeconfig [CLUSTER_KUBECONFIG] apply -f [MANIFEST_FILE]
[MANIFEST_FILE] は、新しい StorageClass マニフェスト ファイルへのパスです。