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

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

概要

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

クラスタを作成すると、GKE On-Prem によって standard という名前の 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 クラスタにデプロイする手順がベンダーから提供されているはずです。

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]
...

マニフェストをファイルとして保存し、新しい StorageClass オブジェクトを作成します。

kubectl --kubeconfig [CLUSTER_KUBECONFIG] apply -f [MANIFEST_FILE]
 

[MANIFEST_FILE] は、新しい StorageClass マニフェスト ファイルへのパスです。

次のステップ