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

このページでは、GKE On-Prem クラスタのデフォルトの StorageClass を設定する方法について説明します。ストレージもご覧ください。

概要

GKE On-Prem は、次のいずれかのメカニズムを使用して、ブロック ストレージまたはファイル ストレージと統合できます。

クラスタを作成すると、GKE On-Prem によって standard という名前の Kubernetes StorageClass が作成されます。これはクラスタのデフォルトの StorageClass です。

standard StorageClass に関する詳細情報を表示するには、次のコマンドを入力します。

kubectl --kubeconfig [CLUSTER_KUBECONFIG] get storageclass standard --output yaml

[CLUSTER_KUBECONFIG] は、クラスタの kubeconfig ファイルのパスです。

出力から、StorageClass の名前が standard であることがわかります。また、storageclass.kubernetes.io/is-default-class: "true" アノテーションも確認できます。このアノテーションは、standard という名前の StorageClass をデフォルトの StorageClass として識別します。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
  ...
  name: standard
  ...
parameters:
  datastore: HOST2-DATASTORE2
  diskformat: thin
  fstype: ext4
provisioner: kubernetes.io/vsphere-volume
reclaimPolicy: Delete
volumeBindingMode: Immediate

クラスタには複数の StorageClass オブジェクトを含めることができますが、そのいずれか 1 つだけが storageclass.kubernetes.io/is-default-class: "true" アノテーションを持ちます。これが、デフォルトの StorageClass になります。

上述の出力では、プロビジョナーが kubernetes.io/vsphere-volume であることもわかります。これは、クライアントがクラス standard のストレージをリクエストしたときにアクションを実行するプロビジョナーです。

デフォルトの StorageClass

ストレージをリクエストするときに、StorageClass を指定できます。StorageClass を指定しない場合は、デフォルトの StorageClass が使用されます。たとえば、StorageClass を指定しない PersistentVolumeClaim を作成したとします。ボリューム コントローラは、デフォルトの StorageClass に従ってクレームを処理します。

デフォルトの StorageClass の変更

クラスタ管理者として、デフォルトのストレージ クラスを変更できます。StorageClass を指定しないストレージに対するすべての要求は、選択した StorageClass に従って処理されます。このセクションでは、デフォルトを変更する手順について説明します。

新しいストレージ システムのデプロイ

新しいストレージ メカニズムと、その新しいストレージ メカニズムを Kubernetes クラスタに統合するためのソフトウェア コンポーネントをデプロイします。たとえば、クラスタへの CSI ドライバのインストールが必要な場合があります。

この手順は、使用しているストレージ ベンダーによって異なります。CSI ドライバの場合、ベンダーは、CSI ドライバを Kubernetes クラスタにデプロイする手順を提供する必要があります。CSI ドライバのドキュメントには、StorageClass に指定するドライバ固有のパラメータ(プロビジョナー名など)を含めます。

新しいアプライアンスの StorageClass を作成するときは、その背後にある特定のドライバやアプライアンスの名前ではなく、そのプロパティ(「高速」や「複製度の高さ」など)をベースとして StorageClass に名前を付けます。これにより、クラスタと環境全体で一貫したストレージ ポリシーが簡単になります。

standard StorageClass からデフォルトのアノテーションを削除する

テキスト エディタで standard StorageClass マニフェストを開くには、次のコマンドを入力します。

kubectl --kubeconfig [CLUSTER_KUBECONFIG] edit storageclass standard

テキスト エディタで、storageclass.kubernetes.io/is-default-class: "true" アノテーションを削除します。テキスト エディタを閉じます。

アノテーションが削除されたことを確認するには、次のコマンドを入力します。

kubectl --kubeconfig [CLUSTER_KUBECONFIG] get storageclass standard --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 マニフェスト ファイルへのパスです。

次のステップ