0
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をDynamic Provisioningで使用する

Posted at

はじめに

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

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

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

事前準備

IAMポリシーの設定

マニュアルに記載のある二つのIAMポリシーを設定します。

ALLOW any-user to manage file-family in compartment <compartment-name> where request.principal.type = 'cluster'

ALLOW any-user to use virtual-network-family in compartment <compartment-name> where request.principal.type = 'cluster'

なお、使用している環境の制約上、今回は動的グループで同様に設定しています。

転送中のデータを暗号化する際の設定

セキュリティリスト設定

マニュアルに記載のある2つのルールを設定します。

  • 選択したソースIPアドレスまたはCIDRブロックのすべてのポートから、またはすべてのソースから、2051の宛先ポート範囲へのTCPトラフィックを許可するステートフル・イングレス・ルール。
  • 2051のソース・ポート範囲からのTCPトラフィックを許可するステートフル・エグレス・ルール。選択した宛先IPアドレスまたはCIDRブロックのすべてのポート、またはすべての宛先のいずれか。

oci-fss-utilsパッケージのインストール

各Workerノードにoci-fss-utilsパッケージをインストールします。

Workerノードがプライベートサブネットにあるため、パブリックサブネットのBastionサーバを経由して、パッケージをインストールします。
パッケージはここからダウンロードします。

[opc@uk-bastion ~]$ ls -l
total 208
-rw-r--r--. 1 opc opc 210184 Jan 12 07:18 oci-fss-utils-3.0-3.el7.x86_64.rpm
drwxrwxr-x. 2 opc opc     36 Jan 12 07:08 ssh-key
[opc@uk-bastion ~]$ scp -i ssh-key/ssh-key-2021-09-12.key oci-fss-utils-3.0-3.el7.x86_64.rpm opc@10.0.10.211:/home/opc
oci-fss-utils-3.0-3.el7.x86_64.rpm                                                                                                                    100%  205KB  73.1MB/s   00:00 
worker$ sudo yum localinstall oci-fss-utils-3.0-3.el7.x86_64.rpm 
読み込んだプラグイン:langpacks, ulninfo
oci-fss-utils-3.0-3.el7.x86_64.rpm を調べています: oci-fss-utils-3.0-3.el7.x86_64
oci-fss-utils-3.0-3.el7.x86_64.rpm をインストール済みとして設定しています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ oci-fss-utils.x86_64 0:3.0-3.el7 を インストール
--> 依存性解決を終了しました。
ol7_MySQL80/x86_64         
・・・
インストール:
  oci-fss-utils.x86_64 0:3.0-3.el7                                                                                                                                                      

完了しました!

PVの利用

StorageClassの設定

Provisionerとしてfss.csi.oraclecloud.comを指定して、StorageClassを作成します。

$ kubectl get csiDriver fss.csi.oraclecloud.com
NAME                      ATTACHREQUIRED   PODINFOONMOUNT   STORAGECAPACITY   TOKENREQUESTS   REQUIRESREPUBLISH   MODES        AGE
fss.csi.oraclecloud.com   false            false            false             <unset>         false               Persistent   110d
fss-sc.yaml
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: fss-storage-class
provisioner: fss.csi.oraclecloud.com
parameters:
  availabilityDomain: TGjA:UK-LONDON-1-AD-2
  mountTargetOcid: ocid1.mounttarget.oc1.uk_london_1.aaaaxxxxxxxxxxxxxxxxxxxxiljt
  compartmentOcid: ocid1.compartment.oc1..aaaaaaxxxxxxxxxxxxxxxxxxiy5a
#  kmsKeyOcid: <key-ocid>
  exportPath: /fss-pvtest
#  exportOptions: [{<options-in-json-format>}]
  encryptInTransit: "true"
$ kubectl get sc
NAME                PROVISIONER                       RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
fss-storage-class   fss.csi.oraclecloud.com           Delete          Immediate              false                  39s
oci                 oracle.com/oci                    Delete          Immediate              false                  110d
oci-bv (default)    blockvolume.csi.oraclecloud.com   Delete          WaitForFirstConsumer   true                   110d

PVCの設定

作成したStorageClassを指定してPVCを作成します。

fss-dyn-claim.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: fss-dynamic-claim
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: "fss-storage-class"
  resources:
    requests:
      storage: 50Gi
$ kubectl apply -f fss-dyn-claim.yaml 
persistentvolumeclaim/fss-dynamic-claim created

確認します。

$ kubectl get pvc
NAME                STATUS   VOLUME                                         CAPACITY   ACCESS MODES   STORAGECLASS        AGE
fss-dynamic-claim   Bound    csi-fss-2c40d771-974b-470b-992f-517f3e8ae71b   50Gi       RWX            fss-storage-class   38s
fss-pvc             Bound    fss-pv                                         50Gi       RWX                                41h
$ kubectl get pv
NAME                                           CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                       STORAGECLASS        REASON   AGE
csi-fss-2c40d771-974b-470b-992f-517f3e8ae71b   50Gi       RWX            Delete           Bound    default/fss-dynamic-claim   fss-storage-class            2m38s
fss-pv                                         50Gi       RWX            Retain           Bound    default/fss-pvc                                          44h

PVCだけでなくPVもデプロイされていますね。

OCIコンソールでもファイルシステムが作成されていることが確認できます。

スクリーンショット 2023-01-13 10.35.12.png

Podの作成

作成したPVCを指定してPodを作成します。

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

確認します。

$ kubectl exec -it nginx-dynamic -- mount |grep fss-test
192.168.2.2:/fss-pvtest on /fss-test type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=2049,timeo=600,retrans=2,sec=sys,mountaddr=192.168.2.2,mountvers=3,mountport=2048,mountproto=tcp,local_lock=none,addr=192.168.2.2)
$ kubectl exec -it nginx-dynamic -- df -h |grep fss-test
192.168.2.2:/fss-pvtest  8.0E     0  8.0E   0% /fss-test
$ kubectl exec -it nginx-dynamic -- touch /fss-test/testfile
$ kubectl exec -it nginx-dynamic -- ls -l /fss-test
total 0
-rw-r--r--. 1 root root 0 Jan 13 01:47 testfile

マウントされていること、書き込みができることがわかります。

0
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
0
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?