第5章 Container Storage Interface (CSI) の使用


5.1. CSI ボリュームの設定

Container Storage Interface (CSI) により、OpenShift Dedicated は、CSI インターフェイス を永続ストレージとして実装するストレージバックエンドからストレージを消費できます。

注記

OpenShift Dedicated 4 は、CSI 仕様 のバージョン 1.6.0 をサポートします。

5.1.1. CSI アーキテクチャー

CSI ドライバーは通常、コンテナーイメージとして提供されます。これらのコンテナーは、それらが実行される OpenShift Dedicated を認識しません。OpenShift Dedicated で CSI 互換のストレージバックエンドを使用するには、クラスター管理者が、OpenShift Dedicated とストレージドライバーの間のブリッジとして機能する複数のコンポーネントをデプロイする必要があります。

次の図は、OpenShift Dedicated クラスターの Pod で実行されるコンポーネントの概要を示しています。

CSI コンポーネントのアーキテクチャー

異なるストレージバックエンドに対して複数の CSI ドライバーを実行できます。各ドライバーには、独自の外部コントローラーのデプロイメントおよびドライバーと CSI レジストラーを含むデーモンセットが必要です。

5.1.1.1. 外部の CSI コントローラー

外部の CSI コントローラーは、5 つのコンテナーを含む 1 つまたは複数の Pod を配置するデプロイメントです。

  • スナップショットコンテナーは、VolumeSnapshot オブジェクトおよび VolumeSnapshotContent オブジェクトを監視し、VolumeSnapshotContent オブジェクトの作成および削除を担当します。
  • リサイザーコンテナーは、PersistentVolumeClaim オブジェクトでより多くのストレージを要求した場合に、PersistentVolumeClaim の更新を監視し、CSI エンドポイントに対して ControllerExpandVolume 操作をトリガーするサイドカーコンテナーです。
  • 外部の CSI アタッチャーコンテナーは、OpenShift Dedicated からの attach および detach 呼び出しを、CSI ドライバーへのそれぞれの ControllerPublish および ControllerUnpublish 呼び出しに変換します。
  • OpenShift Dedicated からの provision および delete 呼び出しを、CSI ドライバーへのそれぞれの CreateVolume および DeleteVolume 呼び出しに変換する外部 CSI プロビジョナーコンテナー。
  • CSI ドライバーコンテナー。

CSI アタッチャーおよび CSI プロビジョナーコンテナーは、Unix Domain Socket を使用して、CSI ドライバーコンテナーと通信し、CSI の通信が Pod 外に出ないようにします。CSI ドライバーは Pod 外からはアクセスできません。

注記

通常、attachdetachprovision、および delete 操作では、CSI ドライバーがストレージバックエンドに対する認証情報を使用する必要があります。CSI コントローラー Pod をインフラストラクチャーノードで実行し、コンピュートノードで致命的なセキュリティー違反が発生した場合でも認証情報がユーザープロセスに漏洩されないようにします。

注記

外部のアタッチャーは、サードパーティーの attach または detach 操作をサポートしない CSI ドライバーに対しても実行する必要があります。外部のアタッチャーは、CSI ドライバーに対して ControllerPublish または ControllerUnpublish 操作を実行しません。ただし、必要な OpenShift Dedicated 接続 API を実装するために実行する必要があります。

5.1.1.2. CSI ドライバーのデーモンセット

CSI ドライバーデーモンセットは、OpenShift Dedicated が CSI ドライバーによって提供されるストレージをノードにマウントし、それをユーザーワークロード (Pod) で永続ボリューム (PV) として使用できるようにするすべてのノードで Pod を実行します。CSI ドライバーがインストールされた Pod には、以下のコンテナーが含まれます。

  • ノード上で実行中の openshift-node サービスに CSI ドライバーを登録する CSI ドライバーレジストラー。このノードで実行中の openshift-node プロセスは、ノードで利用可能な UNIX Domain Socket を使用して CSI ドライバーに直接接続します。
  • CSI ドライバー

ノードにデプロイされた CSI ドライバーには、ストレージバックエンドへの認証情報をできる限り少なく指定する必要があります。OpenShift Dedicated は、NodePublish/NodeUnpublish および NodeStage/NodeUnstage などの CSI 呼び出しのノードプラグインセットが実装されている場合のみを使用します。

5.1.2. OpenShift Dedicated でサポートされる CSI ドライバー

OpenShift Dedicated は、デフォルトで特定の CSI ドライバーをインストールし、in-tree ボリュームプラグインでは不可能なストレージオプションをユーザーに提供します。

これらのサポートされているストレージアセットにマウントする CSI プロビジョニングされた永続ボリュームを作成するために、OpenShift Dedicated は、必要な CSI ドライバー Operator、CSI ドライバー、および必要なストレージクラスをデフォルトでインストールします。Operator およびドライバーのデフォルト namespace の詳細は、特定の CSI ドライバー Operator のドキュメントを参照してください。

重要

AWS EFS および GCP Filestore CSI ドライバーは、デフォルトではインストールされないため、手動でインストールする必要があります。AWS EFS CSI ドライバーのインストール手順は、AWS Elastic File Service CSI Driver Operator のセットアップ を参照してください。GCP Filestore CSI ドライバーのインストール手順は、Google Compute Platform Filestore CSI Driver Operator を参照してください。

次の表では、OpenShift Dedicated でサポートされる CSI ドライバーと、ボリュームのスナップショットやサイズ変更などの CSI 機能がサポートされているかを説明します。

重要

CSI ドライバーが以下の表に記載されていない場合は、CSI ストレージベンダーが提供するインストール手順に従って、サポートされている CSI 機能を使用する必要があります。

表5.1 OpenShift Dedicated でサポートされている CSI ドライバーと機能
CSI ドライバーCSI ボリュームスナップショットCSI のクローン作成CSI のサイズ変更インラインの一時ボリューム

AWS EBS

 ✅

 ✅

AWS EFS

Google Compute Platform (GCP) persistent disk (PD)

  ✅

  ✅

 ✅

GCP Filestore

 ✅

 ✅

LVM Storage

 ✅

 ✅

 ✅

5.1.3. 動的プロビジョニング

永続ストレージの動的プロビジョニングは、CSI ドライバーおよび基礎となるストレージバックエンドの機能により異なります。CSI ドライバーのプロバイダーは、OpenShift Dedicated でストレージクラスを作成する方法と、設定に使用できるパラメーターを文書化する必要があります。

作成されたストレージクラスは、動的プロビジョニングを有効にするために設定できます。

手順

  • デフォルトのストレージクラスを作成します。 これにより、特殊なストレージクラスを必要としないすべての PVC がインストールされた CSI ドライバーでプロビジョニングされます。

    # oc create -f - << EOF
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: <storage-class> 1
      annotations:
        storageclass.kubernetes.io/is-default-class: "true"
    provisioner: <provisioner-name> 2
    parameters:
    EOF
    1
    作成されるストレージクラスの名前。
    2
    インストールされている CSI ドライバーの名前。

5.1.4. CSI ドライバーの使用例

以下の例では、テンプレートを変更せずにデフォルトの MySQL テンプレートをインストールします。

前提条件

  • CSI ドライバーがデプロイされている。
  • 動的プロビジョニング用にストレージクラスが作成されている。

手順

  • MySQL テンプレートを作成します。

    # oc new-app mysql-persistent

    出力例

    --> Deploying template "openshift/mysql-persistent" to project default
    ...

    # oc get pvc

    出力例

    NAME              STATUS    VOLUME                                   CAPACITY
    ACCESS MODES   STORAGECLASS   AGE
    mysql             Bound     kubernetes-dynamic-pv-3271ffcb4e1811e8   1Gi
    RWO            cinder         3s

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.