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

ユーザー クラスタには 1 つ以上の StorageClass オブジェクトがあり、そのうちの 1 つはデフォルトの StorageClass として指定されます。このページでは、ユーザー クラスタのデフォルトの StorageClass を設定する方法について説明します。

詳細については、ストレージをご覧ください。

デフォルトの 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 マニフェスト ファイルへのパスです。

次のステップ