検索

5.6. デフォルトストレージクラスの管理

download PDF

5.6.1. 概要

デフォルトのストレージクラスを管理すると、複数の異なる目的を達成できます。

  • 動的プロビジョニングを無効にして静的プロビジョニングを強制します。
  • 他の優先ストレージクラスがある場合に、storage operator による最初のデフォルトストレージクラスの作成を阻止します。
  • デフォルトのストレージクラスに名前を付け直すか変更します。

これらの目的を達成するには、ClusterCSIDriver オブジェクトの spec.storageClassState フィールドの設定を変更します。このフィールドで可能な設定は以下のとおりです。

  • Managed: (デフォルト) コンテナーストレージインターフェイス (CSI) オペレーターがデフォルトのストレージクラスをアクティブに管理しているため、クラスター管理者によってデフォルトのストレージクラスに対して行われた手動変更のほとんどは削除され、デフォルトのストレージクラスは継続的に再作成されます。手動で削除しようとしました。
  • Unmanaged: デフォルトのストレージクラスを変更できます。CSI Operator はストレージクラスをアクティブに管理しないため、自動的に作成するデフォルトのストレージクラスを調整します。
  • Removed: CSI Operator はデフォルトのストレージクラスを削除します。

デフォルトのストレージクラスの管理は、次の Container Storage Interface (CSI) ドライバー operator によってサポートされています。

5.6.2. Web コンソールを使用したデフォルトのストレージクラスの管理

前提条件

  • OpenShift Container Platform Web コンソールにアクセスできる。
  • クラスター管理者権限でクラスターにアクセスできる。

手順

Web コンソールを使用してデフォルトのストレージクラスを管理するには、次の手順を実行します。

  1. Web コンソールにログインします。
  2. Administration > CustomResourceDefinitions をクリックします。
  3. CustomResourceDefinitions ページで、clustercsidriver と入力して、ClusterCSIDriver オブジェクトを見つけます。
  4. ClusterCSIDriver をクリックし、Instances タブをクリックします。
  5. 目的のインスタンスの名前をクリックし、YAML タブをクリックします。
  6. spec.storageClassState フィールドを追加し、値を ManagedUnmanaged、または Removed に設定します。

    ...
    spec:
      driverConfig:
        driverType: ''
      logLevel: Normal
      managementState: Managed
      observedConfig: null
      operatorLogLevel: Normal
      storageClassState: Unmanaged 1
    ...

    1
    spec.storageClassState フィールドが "Unmanaged" に設定されている
  7. Save をクリックします。

5.6.3. CLI を使用したデフォルトのストレージクラスの管理

前提条件

  • クラスター管理者権限でクラスターにアクセスできる。

手順

CLI を使用してストレージクラスを管理するには、次のコマンドを実行します。

oc patch clustercsidriver $DRIVERNAME --type=merge -p "{\"spec\":{\"storageClassState\":\"${STATE}\"}}" 1
1
ここで、${STATE} は "削除"、"管理"、または "非管理" です。

$DRIVERNAME はプロビジョナー名です。コマンド oc get sc を実行すると、プロビジョナー名を見つけることができます。

5.6.4. デフォルトのストレージクラスが存在しないか、複数のデフォルトストレージクラスがある

5.6.4.1. 複数のデフォルトのストレージクラス

デフォルト以外のストレージクラスをデフォルトとしてマークし、既存のデフォルトストレージクラスの設定を解除しない場合、またはデフォルトのストレージクラスがすでに存在するときにデフォルトのストレージクラスを作成した場合は、複数のデフォルトストレージクラスが発生する可能性があります。複数のデフォルトストレージクラスが存在する場合、デフォルトストレージクラス (pvc.spec.storageClassName =nil) を要求するすべての永続ボリューム要求 (PVC) は、そのストレージクラスのデフォルトステータスと管理者に関係なく、最後に作成されたデフォルトストレージクラスを取得します。アラートダッシュボードで、複数のデフォルトストレージクラス MultipleDefaultStorageClasses があるというアラートを受け取ります。

5.6.4.2. デフォルトのストレージクラスなし

PVC が存在しないデフォルトのストレージクラスの使用を試みる可能性があるシナリオは 2 つあります。

  • 管理者がデフォルトのストレージクラスを削除するか、デフォルト以外としてマークした後、ユーザーがデフォルトのストレージクラスを要求する PVC を作成します。
  • インストール中に、インストーラーは、まだ作成されていないデフォルトのストレージクラスを要求する PVC を作成します。

前述のシナリオでは、PVC は無期限に保留状態のままになります。この状況を解決するには、デフォルトのストレージクラスを作成するか、既存のストレージクラスの 1 つをデフォルトとして宣言します。デフォルトのストレージクラスが作成または宣言されるとすぐに、PVC は新しいデフォルトのストレージクラスを取得します。可能であれば、最終的に PVC は通常どおり静的または動的にプロビジョニングされた PV にバインドされ、保留状態から抜け出します。

5.6.5. デフォルトストレージクラスの変更

次の手順を使用して、デフォルトのストレージクラスを変更します。

たとえば、gp3standard の 2 つのストレージクラスがあり、デフォルトのストレージクラスを gp3 から standard に変更する必要がある場合などです。

前提条件

  • クラスター管理者権限でクラスターにアクセスできる。

手順

デフォルトのストレージクラスを変更するには、以下を実行します。

  1. ストレージクラスを一覧表示します。

    $ oc get storageclass

    出力例

    NAME                 TYPE
    gp3 (default)        kubernetes.io/aws-ebs 1
    standard             kubernetes.io/aws-ebs

    1
    (default) はデフォルトのストレージクラスを示します。
  2. 目的のストレージクラスをデフォルトにします。

    目的のストレージクラスに、次のコマンドを実行して storageclass.kubernetes.io/is-default-class アノテーションを true に設定します。

    $ oc patch storageclass standard -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "true"}}}'
    注記

    短期間であれば、複数のデフォルトのストレージクラスを使用できます。ただし、最終的には 1 つのデフォルトのストレージクラスのみが存在することを確認する必要があります。

    複数のデフォルトストレージクラスが存在する場合、デフォルトストレージクラス (pvc.spec.storageClassName =nil) を要求するすべての永続ボリューム要求 (PVC) は、そのストレージクラスのデフォルトステータスと管理者に関係なく、最後に作成されたデフォルトストレージクラスを取得します。アラートダッシュボードで、複数のデフォルトストレージクラス MultipleDefaultStorageClasses があるというアラートを受け取ります。

  3. 古いデフォルトストレージクラスからデフォルトのストレージクラス設定を削除します。

    古いデフォルトのストレージクラスの場合は、次のコマンドを実行して storageclass.kubernetes.io/is-default-class アノテーションの値を false に変更します。

    $ oc patch storageclass gp3 -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "false"}}}'
  4. 変更内容を確認します。

    $ oc get storageclass

    出力例

    NAME                 TYPE
    gp3                  kubernetes.io/aws-ebs
    standard (default)   kubernetes.io/aws-ebs

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.