6.21.6. 静的プロビジョニング
静的プロビジョニングを使用して、永続ボリューム (PV) と永続ボリューム要求 (PVC) を作成し、既存のサーバーメッセージブロックプロトコル (SMB) 共有を使用することができます。
前提条件
- OpenShift Container Platform Web コンソールにアクセスできる。
- CIFS/SMB CSI Driver Operator およびドライバーがインストールされている。
SMB サーバーをインストールしており、サーバーに関する次の情報を把握している。
- ホスト名
- 共有名
- ユーザー名およびパスワード
手順
静的プロビジョニングを設定するには以下を実行します。
以下のコマンドと次のサンプル YAML ファイルを使用して、Samba サーバーにアクセスするためのシークレットを作成します。
$ oc create -f <file_name>.yamlシークレット YAML ファイルの例
apiVersion: v1 kind: Secret metadata: name: smbcreds1 namespace: samba-server2 stringData: username: <username>3 password: <password>4 次のサンプル YAML ファイルを使用して次のコマンドを実行し、PV を作成します。
$ oc create -f <pv_file_name>.yaml1 - 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。
PVC を作成します。
次のサンプル YAML ファイルを使用して次のコマンドを実行し、PVC を作成します。
$ oc create -f <pv_file_name>.yaml1 次のコマンドを実行して、PVC が作成され、"バインド" ステータスになっていることを確認します。
$ oc describe pvc <pvc_name>1
次のサンプル YAML ファイルを使用して次のコマンドを実行し、Linux 上にデプロイメントを作成します。
注記前の手順で作成した PV と PVC を使用する場合、次のデプロイメントは必須ではありません。これらはどのように使用できるかの例です。
$ oc create -f <deployment_file_name>.yaml1 - 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; done4 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 の名前。
コンテナーで
df -hコマンドを実行して、設定を確認します。$ oc exec -it <pod_name> -- df -h1 - 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ディレクトリーがあります。