CSIボリューム・プラグインを使用した永続ファイル・システム・ストレージの作成
Compute Cloud@Customerでは、CSIボリューム・プラグインを使用して、新しいファイル・システムにPVCをプロビジョニングできます。kubectl
コマンドを使用して、ストレージ・クラスおよび永続ボリューム要求を作成します。CSIボリューム・プラグインは、PVCを新しいファイル・システムにプロビジョニングします。
VCNごとに1つのマウント・ターゲットと1つのファイル・システムのみを設定できます。クラスタごとに複数のストレージ・クラス、永続ボリュームおよび永続ボリューム要求を設定できます。クラスタ内のすべてのストレージ・クラス、永続ボリュームおよび永続ボリューム要求は、1つのNFSを共有します。
-
fss.csi.oraclecloud.com
プロビジョナを使用する新しいストレージ・クラスを作成します。$ kubectl create -f sc.yaml
sc.yaml
マニフェスト・ファイルの内容は次のとおりです。kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: fss-dyn-storage provisioner: fss.csi.oraclecloud.com parameters: availabilityDomain: AD-1 compartmentOcid: ocid1.compartment.unique_ID mountTargetSubnetOcid: ocid1.subnet.unique_ID exportPath: AUTOSELECT exportOptions: "[{\"source\":\"0.0.0.0/0\",\"requirePrivilegedSourcePort\":false,\"access\":\"READ_WRITE\",\"identitySquash\":\"NONE\"}]" encryptInTransit: "false"
-
新しいストレージ・クラスの名前は
fss-dyn-storage
です。 -
mountTargetSubnetOcid
またはmountTargetOcid
のいずれかが必要です。mountTargetSubnetOcid
の値は、CSIプラグインでマウント・ターゲットを作成するサブネットのOCIDです。mountTargetOcid
の値は、既存のマウント・ターゲットのOCIDです。mountTargetSubnetOcid
とmountTargetOcid
の両方を指定した場合、mountTargetOcid
が使用され、mountTargetSubnetOcid
は無視されます。ワーカー・ノードからマウント・ターゲットに到達できるようにするには、「OKEワーカー・サブネットの作成」で説明されているworkerサブネットのような構成を持つサブネットを指定するか、ワーカー・サブネットのような構成を持つサブネットにマウント・ターゲットを作成します。NFSサーバーへのTCPポート2049がそのサブネットで開いていることを確認します。
-
compartmentOcid
はオプションです。この値は、新しいファイル・システム(およびmountTargetSubnetOcid
が指定されている場合は新しいマウント・ターゲット)が作成されるコンパートメントのOCIDです。デフォルト値はクラスタと同じコンパートメントです。 -
AUTOSELECT
をexportPath
の値として指定する必要があります。 -
exportOptions
値は、NFSクライアントがマウント・ターゲットに接続するときに付与されるアクセス権を定義する、ファイル・システム・エクスポート内のNFSエクスポート・オプション・エントリです。source
には、単一のIPアドレスまたはCIDRブロック範囲を指定できます。この値は、JSON形式のパラメータのセットです。 -
encryptInTransit
の値は、転送中のデータを暗号化するかどうかを指定します。
-
-
ファイル・ストレージ・サービスの新しいファイル・システムによってプロビジョニングされるPVCを作成します。
$ kubectl create -f fss-dyn-claim.yaml
fss-dyn-claim.yaml
マニフェスト・ファイルの内容は次のとおりです。apiVersion: v1 kind: PersistentVolumeClaim metadata: name: fss-dynamic-claim spec: accessModes: - ReadWriteMany storageClassName: "fss-dyn-storage" resources: requests: storage: 50Gi
-
PVCが新しい永続ボリュームにバインドされていることを確認します。
$ kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE fss-dynamic-claim Bound csi-fss-f6823a66-8b6f-4c42-9d1f-d25723e69257 50Gi RWX fss-dyn-storage 6m47s
-
ポッドなどのオブジェクトを作成する場合は、新しいPVCを使用します。
オブジェクトの作成例を次に示します。
$ kubectl create nginx.yaml
nginx.yaml
ファイルのコンテンツは、次のとおりです。最後の行のclaimName
を参照してください。apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx_image_url ports: - name: http containerPort: 80 volumeMounts: - name: persistent-storage mountPath: /usr/share/nginx/html volumes: - name: persistent-storage persistentVolumeClaim: claimName: fss-dynamic-claim
オブジェクトが作成され、デプロイされていることを確認します。
$ kubectl get deploy NAME READY UP-TO-DATE AVAILABLE AGE nginx-deployment 3/3 3 0 104s