検索

5.21. CIFS/SMB CSI Driver Operator

download PDF

OpenShift Container Platform は、Common Internet File System (CIFS) ダイアレクト/Server Message Block (SMB) プロトコル用の Container Storage Interface (CSI) ドライバーを使用して永続ボリューム (PV) をプロビジョニングできます。

重要

CIFS/SMB CSI Driver Operator は、テクノロジープレビューのみの機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

CSI Operator およびドライバーを使用する場合は、永続ストレージ および CSI ボリュームの設定 について理解しておくことが推奨されます。

CIFS/SMB CSI Driver Operator をインストールした後、OpenShift Container Platform は、Operator とドライバーに対応する Pod をデフォルトで openshift-cluster-csi-drivers namespace にインストールします。これにより、CIFS/SMB CSI ドライバーは、CIFS/SMB 共有にマウントされる CSI プロビジョニングされた永続ボリューム (PV) を作成できるようになります。

  • CIFS/SMB CSI Driver Operator をインストールしても、永続ボリューム要求 (PVC) の作成に使用するストレージクラスがデフォルトで作成されません。ただし、動的プロビジョニング用の CIFS/SMB StorageClass を手動で作成できます。CIFS/SMB CSI Driver Operator は、ストレージボリュームをオンデマンドで作成できるようにすることで、動的なボリュームプロビジョニングをサポートします。クラスター管理者がストレージを事前にプロビジョニングする必要がなくすことで、動的ボリュームのプロビジョニングをサポートします。
  • CIFS/SMB CSI ドライバー を使用すると、CIFS/SMB PV の作成およびマウントが可能です。

5.21.1. CSI について

ストレージベンダーはこれまで Kubernetes の一部としてストレージドライバーを提供してきました。Container Storage Interface (CSI) の実装では、サードパーティーのプロバイダーは、コア Kubernetes コードを変更せずに標準のインターフェイスを使用してストレージプラグインを提供できます。

CSI Operator は、インツリーボリュームプラグインでは不可能なボリュームスナップショットなどのストレージオプションを OpenShift Container Platform ユーザーに付与します。

5.21.2. 制限事項

次の制限は、Common Internet File System (CIFS)/Server Message Block (SMB) Container Storage Interface (CSI) Driver Operator に適用されます。

  • FIPS モードはサポートされていません。

    Federal Information Processing Standards (FIPS) モードが有効になっている場合、md4 および md5 の使用は無効になり、ユーザーは ntlm、ntlmv2、または ntlmssp 認証を使用できなくなります。また、署名は md5 を使用しているため、使用できません。FIPS モードが有効になっていると、これらのメソッドを使用する CIFS マウントは失敗します。

  • HTTP プロキシー設定を使用してクラスター SMB サーバーの外部に接続することは、CSI ドライバーではサポートされていません。

    CIFS/SMB は LAN プロトコルであり、サブネットにルーティングすることはできますが、WAN 経由で拡張するようには設計されておらず、HTTP プロキシー設定はサポートされていません。

5.21.3. CIFS/SMB CSI Driver Operator のインストール

CIFS/SMB CSI Driver Operator (Red Hat Operator) は、デフォルトでは OpenShift Container Platform にインストールされません。以下の手順を使用して、クラスター内で CIFS/SMB CSI Driver Operator をインストールおよび設定します。

前提条件

  • OpenShift Container Platform Web コンソールにアクセスできる。

手順

Web コンソールから CIFS/SMB CSI Driver Operator をインストールするには、以下を実行します。

  1. Web コンソールにログインします。
  2. CIFS/SMB CSI Operator をインストールします。

    1. Operators OperatorHub をクリックします。
    2. フィルターボックスに CIFS/SMB CSI と入力して、CIFS/SMB CSI Operator を見つけます。
    3. CIFS/SMB CSI Driver Operator ボタンをクリックします。
    4. CIFS/SMB CSI Driver Operator ページで、Install をクリックします。
    5. Install Operator のページで、以下のことを確認してください。

      • All namespaces on the cluster (default) が選択されている。
      • Installed Namespaceopenshift-cluster-csi-drivers に設定されている。
    6. Install をクリックします。

      インストールが終了すると、CIFS/SMB CSI Operator が Web コンソールの Installed Operators に表示されます。

5.21.4. CIFS/SMB CSI ドライバーのインストール

CIFS/SMBContainer Storage Interface (CSI) ドライバー Operator をインストールした後、CIFS/SMB CSI ドライバーをインストールします。

前提条件

  • OpenShift Container Platform Web コンソールにアクセスできる。
  • CIFS/SMB CSI Driver Operator がインストールされている。

手順

  1. Administration CustomResourceDefinitions ClusterCSIDriver をクリックします。
  2. Instances タブで Create ClusterCSIDriver をクリックします。
  3. 以下の YAML ファイルを使用します。

    apiVersion: operator.openshift.io/v1
    kind: ClusterCSIDriver
    metadata:
        name: smb.csi.k8s.io
    spec:
      managementState: Managed
  4. Create をクリックします。
  5. 以下の条件が "True" に変わるのを待ちます。

    • SambaDriverControllerServiceControllerAvailable
    • SambaDriverNodeServiceControllerAvailable

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

Common Internet File System (CIFS) ダイアレクト/Server Message Block (SMB) プロトコルボリュームの動的プロビジョニング用のストレージクラスを作成できます。ボリュームをプロビジョニングすると、ストレージクラスで定義された source の下に永続ボリューム (PV) 名を持つサブディレクトリーが作成されます。

前提条件

  • CIFS/SMB CSI Driver Operator およびドライバーがインストールされている。
  • 実行中の OpenShift Container Platform クラスターにログインしている。
  • SMB サーバーをインストールしており、サーバーに関する次の情報を把握している。

    • ホスト名
    • 共有名
    • ユーザー名およびパスワード

手順

動的プロビジョニングを設定するには、以下を行います。

  1. 以下のコマンドと次のサンプル YAML ファイルを使用して、Samba サーバーにアクセスするためのシークレットを作成します。

    $ oc create -f <file_name>.yaml

    シークレット YAML ファイルの例

    apiVersion: v1
    kind: Secret
    metadata:
      name: smbcreds 1
      namespace: samba-server 2
    stringData:
      username: <username> 3
      password: <password> 4

    1
    Samba サーバーのシークレットの名前。
    2
    Samba サーバーのシークレットの namespace。
    3
    Samba サーバーのシークレットのユーザー名。
    4
    Samba サーバーのシークレットのパスワード
  2. 次のサンプル YAML ファイルを使用して次のコマンドを実行して、ストレージクラスを作成します。

    $ oc create -f <sc_file_name>.yaml 1
    1
    ストレージクラス YAML ファイルの名前。

    ストレージクラスのサンプル YAML ファイル

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: <sc_name> 1
    provisioner: smb.csi.k8s.io
    parameters:
      source: //<hostname>/<shares> 2
      csi.storage.k8s.io/provisioner-secret-name: smbcreds 3
      csi.storage.k8s.io/provisioner-secret-namespace: samba-server 4
      csi.storage.k8s.io/node-stage-secret-name: smbcreds 5
      csi.storage.k8s.io/node-stage-secret-namespace: samba-server 6
    reclaimPolicy: Delete
    volumeBindingMode: Immediate
    mountOptions:
      - dir_mode=0777
      - file_mode=0777
      - uid=1001
      - gid=1001

    1
    ストレージクラス名
    2
    Samba サーバーをインストールし、クラスターからアクセスできるようにする必要があります。<`hostname>` は Samba サーバーのホスト名、<shares> はエクスポートされた共有で使用するために設定したパスを表します。
    3 5
    前の手順で設定した Samba サーバーのシークレットの名前。csi.storage.k8s.io/provisioner-secret が指定されている場合は、source の下に PV 名を持つサブディレクトリーが作成されます。
    4 6
    前の手順で設定した Samba サーバーのシークレットの namespace。
  3. PVC を作成します。

    1. 次のサンプル YAML ファイルを使用して次のコマンドを実行し、PVC を作成します。

      $ oc create -f <pv_file_name>.yaml 1
      1
      PVC YAML ファイルの名前。

      PVC YAML ファイルの例

      kind: PersistentVolumeClaim
      apiVersion: v1
      metadata:
        name: <pvc_name> 1
      spec:
        accessModes:
          - ReadWriteMany
        resources:
          requests:
            storage: <storage_amount> 2
        storageClassName: <sc_name> 3

      1
      PVC の名前。
      2
      ストレージ要求の量。
      3
      前の手順で作成した CIFS/SMB ストレージクラスの名前。
    2. 次のコマンドを実行して、PVC が作成され、バインドステータスになっていることを確認します。

      $ oc describe pvc <pvc_name> 1
      1
      前の手順で作成した PVC の名前。

      出力例

      Name:          pvc-test
      Namespace:     default
      StorageClass:  samba
      Status:        Bound 1
      ...

      1
      PVC のステータスは Bound です。

5.21.6. 静的プロビジョニング

静的プロビジョニングを使用して、永続ボリューム (PV) と永続ボリューム要求 (PVC) を作成し、既存のサーバーメッセージブロックプロトコル (SMB) 共有を使用することができます。

前提条件

  • OpenShift Container Platform Web コンソールにアクセスできる。
  • CIFS/SMB CSI Driver Operator およびドライバーがインストールされている。
  • SMB サーバーをインストールしており、サーバーに関する次の情報を把握している。

    • ホスト名
    • 共有名
    • ユーザー名およびパスワード

手順

静的プロビジョニングを設定するには以下を実行します。

  1. 以下のコマンドと次のサンプル YAML ファイルを使用して、Samba サーバーにアクセスするためのシークレットを作成します。

    $ oc create -f <file_name>.yaml

    シークレット YAML ファイルの例

    apiVersion: v1
    kind: Secret
    metadata:
      name: smbcreds 1
      namespace: samba-server 2
    stringData:
      username: <username> 3
      password: <password> 4

    1
    Samba サーバーのシークレットの名前。
    2
    Samba サーバーのシークレットの namespace。
    3
    Samba サーバーのシークレットのユーザー名。
    4
    Samba サーバーのシークレットのパスワード
  2. 次のサンプル YAML ファイルを使用して次のコマンドを実行し、PV を作成します。

    $ oc create -f <pv_file_name>.yaml 1
    1
    PV YAML ファイルの名前。

    PV YAML ファイルの例

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      annotations:
        pv.kubernetes.io/provisioned-by: smb.csi.k8s.io
      name: <pv_name> 1
    spec:
      capacity:
        storage: 100Gi
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain
      storageClassName: ""
      mountOptions:
        - dir_mode=0777
        - file_mode=0777
      csi:
        driver: smb.csi.k8s.io
        volumeHandle: smb-server.default.svc.cluster.local/share/ 2
        volumeAttributes:
          source: //<hostname>/<shares> 3
        nodeStageSecretRef:
          name: <secret_name_shares> 4
          namespace: <namespace> 5

    1
    PV の名前。
    2
    volumeHandle の形式: {smb-server-address}.{sub-dir-name}.{share-name}。この値がクラスター内のすべての共有に対して一意であることを確認してください。
    3
    Samba サーバーをインストールし、クラスターからアクセスできるようにする必要があります。<hostname> は Samba サーバーのホスト名、<shares> はエクスポートされた共有で使用するために設定したパスを表します。
    4
    共有のシークレットの名前。
    5
    適用可能な namespace。
  3. PVC を作成します。

    1. 次のサンプル YAML ファイルを使用して次のコマンドを実行し、PVC を作成します。

      $ oc create -f <pv_file_name>.yaml 1
      1
      PVC YAML ファイルの名前。

      PVC YAML ファイルの例

      kind: PersistentVolumeClaim
      apiVersion: v1
      metadata:
        name: <pvc_name> 1
      spec:
        accessModes:
          - ReadWriteMany
        resources:
          requests:
            storage: <storage_amount> 2
        storageClassName: ""
        volumeName: <pv_name> 3

      1
      PVC の名前。
      2
      ストレージ要求の量。
      3
      最初のステップの PV の名前。
    2. 次のコマンドを実行して、PVC が作成され、バインドステータスになっていることを確認します。

      $ oc describe pvc <pvc_name> 1
      1
      前の手順で作成した PVC の名前。

      出力例

      Name:          pvc-test
      Namespace:     default
      StorageClass:
      Status:        Bound 1
      ...

      1
      PVC のステータスは Bound です。
  4. 次のサンプル YAML ファイルを使用して次のコマンドを実行し、Linux 上にデプロイメントを作成します。

    注記

    前の手順で作成した PV と PVC を使用する場合、次のデプロイメントは必須ではありません。これらはどのように使用できるかの例です。

    $ oc create -f <deployment_file_name>.yaml 1
    1
    デプロイメント YAML ファイルの名前。

    デプロイメント YAML ファイルの例

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: nginx
      name: <deployment_name> 1
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
          name: <deployment_name> 2
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
            - name: <deployment_name> 3
              image: quay.io/centos/centos:stream8
              command:
                - "/bin/bash"
                - "-c"
                - set -euo pipefail; while true; do echo $(date) >> <mount_path>/outfile; sleep 1; done 4
              volumeMounts:
                - name: <vol_mount_name> 5
                  mountPath: <mount_path> 6
                  readOnly: false
          volumes:
            - name: <vol_mount_name> 7
              persistentVolumeClaim:
                claimName: <pvc_name> 8
      strategy:
        rollingUpdate:
          maxSurge: 0
          maxUnavailable: 1
        type: RollingUpdate

    1 2 3
    デプロイメントの名前。
    4 6
    ボリュームマウントパス。
    5 7
    ボリュームマウントの名前。
    8
    前述の手順で作成された PVC の名前。
  5. コンテナーで df -h コマンドを実行して、設定を確認します。

    $ oc exec -it <pod_name> -- df -h 1
    1
    Pod の名前。

    出力例

    Filesystem            Size  Used Avail Use% Mounted on
    ...
    /dev/sda1              97G   21G   77G  22% /etc/hosts
    //20.43.191.64/share   97G   21G   77G  22% /mnt/smb
    ...

    この例では、Common Internet File System (CIFS) ファイルシステムとしてマウントされた /mnt/smb ディレクトリーがあります。

5.21.7. 関連情報

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.