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

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

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

      $ oc create -f <pv_file_name>.yaml 
      1
      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

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

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

      出力例

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

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

    注記

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

    $ oc create -f <deployment_file_name>.yaml 
    1
    1 1 2 3
    デプロイメント 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

    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 ディレクトリーがあります。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る