1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

OKEのPVとしてFile Storage Serviceを使用する

Posted at

はじめに

OCIのKubernetesサービス OKE(Container Engine for Kubernetes )のPV(Persistent Volume)として、File Storage Service(FSS)を使用する場合の設定方法を確認します。

以下のマニュアルに沿って実施します。

使用するOKE環境はこちらです。

$ kubectl get node
NAME          STATUS   ROLES   AGE    VERSION
10.0.10.211   Ready    node    108d   v1.24.1

事前準備

File Storage Serviceの作成

使用するFSSは事前に作成しておきます。

OCIコンソールのストレージファイル・ストレージからファイル・システムの作成をクリックしてFSSを作成します。

セキュリティルールの設定

今回の環境は、シナリオA: 同じサブネット内のマウント・ターゲットとインスタンスに当たりますので、マニュアルの通りにセキュリティリストを設定します。

PVの設定と使用

PVの作成

マニュアルにあるマニフェストをそのまま使用してPVを作成します。
volumeHandleは以下のように環境に合わせて設定する必要があります。

volumeHandle: <FileSystemOCID>:<MountTargetIP>:<path>

スクリーンショット 2023-01-11 16.44.26.png

スクリーンショット 2023-01-11 16.44.53.png

pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: fss-pv
spec:
  capacity:
    storage: 50Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  csi:
    driver: fss.csi.oraclecloud.com
    volumeHandle: ocid1.filesystem.oc1.uk_london_1.aaaaaaxxxxxxxxxxxxxxxxwiljt:10.0.10.xx:/FileSystem-20230111-0418-01
$ kubectl apply -f pv.yaml 
persistentvolume/fss-pv created
$ kubectl get pv
NAME     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
fss-pv   50Gi       RWX            Retain           Available                                   11s

PVCの作成

これもマニュアルの通りに作成します。

pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: fss-pvc
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: ""
  resources:
    requests:
      storage: 50Gi
  volumeName: fss-pv
$ kubectl apply -f pvc.yaml
persistentvolumeclaim/fss-pvc created
$ kubectl get pvc
NAME      STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
fss-pvc   Bound    fss-pv   50Gi       RWX                           13s
$ kubectl get pv
NAME     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM             STORAGECLASS   REASON   AGE
fss-pv   50Gi       RWX            Retain           Bound    default/fss-pvc                           162m

Podの作成

Podを作成してPVをマウントします。

pod.yaml
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: nginx
  name: nginx
spec:
  containers:
  - image: nginx
    name: nginx
    resources: {}
    volumeMounts:
    - mountPath: /fss-test
      name: fss-test
  volumes:
  - name: fss-test
    persistentVolumeClaim:
      claimName: fss-pvc
      readOnly: false
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}
$ kubectl apply -f pod.yaml 
pod/nginx created
$ kubectl get pod
NAME                                 READY   STATUS    RESTARTS   AGE
nginx                                1/1     Running   0          9s

確認します。

$ kubectl exec -it nginx -- mount | grep fss-test
10.0.10.174:/FileSystem-20230111-0418-01 on /fss-test type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=10.0.10.174,mountvers=3,mountport=2048,mountproto=udp,local_lock=none,addr=10.0.10.174)

マウントされてますね。

$ kubectl exec -it nginx -- df -h | grep fss-test
10.0.10.174:/FileSystem-20230111-0418-01  8.0E     0  8.0E   0% /fss-test

PVCでrequestした50GBではなく、FSSの上限の8EBとして認識されています。
マニュアルに以下の記載があります。

requests: storage:要素はPVCのマニフェスト・ファイルに存在する必要があり、その値はPVのマニフェスト・ファイルのcapacity: storage:要素に指定された値と一致する必要があります。それ以外に、requests: storage:要素の値は無視されます。

requestは形式的に書かないといけないけど、その値に意味はないようです。

ファイルを作成して、書き込みができることを確認します。

$ kubectl exec -it nginx -- touch /fss-test/testfile
$ kubectl exec -it nginx -- ls /fss-test/
testfile

AccessModeをRWXにしてますので、別Podから同じPVにアクセスできるか確認します。

Volumeの設定が同じ別のPodを作成しました。

$ kubectl get pod
NAME                                 READY   STATUS    RESTARTS   AGE
nginx                                1/1     Running   0          18m
redis                                1/1     Running   0          10s

マウントできて、別Podで作成したファイルを参照できることを確認します。

$ kubectl exec -it redis -- df -h | grep fss-test
10.0.10.174:/FileSystem-20230111-0418-01  8.0E     0  8.0E   0% /fss-test
$ kubectl exec -it redis -- ls /fss-test
testfile

書き込みもできることを確認します。

$ kubectl exec -it redis -- touch /fss-test/testfile2
$ kubectl exec -it nginx -- ls /fss-test
testfile  testfile2
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?