このページでは、Anthos clusters on VMware(GKE On-Prem)クラスタにデフォルトの StorageClass を設定する方法について説明します。ストレージもご覧ください。
概要
Anthos clusters on VMware は、次のいずれかのメカニズムを使用して、ブロック ストレージまたはファイル ストレージと統合できます。
クラスタを作成すると、Anthos clusters on VMware が 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 マニフェスト ファイルへのパスです。