アリクラウドKubernetes CSI実践-NASダイナミックストレージボリューム使用


1.はじめに


NASストレージディスクはnfs(ネットワークファイルシステム)をPodにマウントできます.アリクラウドKubernetes CSIは の2つの方法をサポートしています. の方法では、通常、手動でpv/pvcを編集して作成してマウントする必要があります.必要なpv/pvcの数が多い場合、手動で作成するのは非常に煩雑です.この場合、 の機能はあなたのニーズを満たすことができます.NASダイナミックストレージボリュームの使用方法を説明します.

2.csi-nas-pluginの導入


Kubernetesクラスタにまだ導入されていない方法については、次の手順を参照してください.

2.1 csi-provisionerの導入

$ kubectl create -f https://raw.githubusercontent.com/kubernetes-sigs/alibaba-cloud-csi-driver/master/deploy/nas/nas-provisioner.yaml

2.2 csi-naspluginの導入

$ kubectl create -f https://raw.githubusercontent.com/kubernetes-sigs/alibaba-cloud-csi-driver/master/deploy/nas/nas-plugin.yaml

2.3運転状態の点検

$ kubectl -nkube-system get po -o wide |grep csi
csi-nasplugin-7mbmx                                2/2     Running   0
csi-nasplugin-89t9v                                2/2     Running   0
csi-nasplugin-8fw5p                                2/2     Running   0
csi-nasplugin-grbqn                                2/2     Running   0
csi-nasplugin-ks8mw                                2/2     Running   0
csi-nasplugin-pp5g7                                2/2     Running   0
csi-provisioner-0                                  2/2     Running   0

3.NASダイナミックストレージボリュームの使用


現在、アリクラウドKubernetes CSIは2種類のNASダイナミックストレージボリュームマウント:subpath方式とfilesystem方式をサポートしています.

3.1 subpathタイプのNASダイナミックストレージボリューム使用


3.1.1使用シーン
複数のKubernetesアプリケーションまたはPodが同じNASストレージボリューム共有データをマウントする必要がある場合、または異なるPodが同じNASファイルシステムの異なるサブディレクトリをマウントする場合、subpathタイプのNASダイナミックストレージボリューム方式を使用できます.
3.1.2 NASファイルシステムとマウントポイントの作成subpathの方法では、まずNASコンソールまたはSDK/APIを使用してNASファイルシステムおよびマウントポイントを作成する必要がある.ファイルシステム:
マウントポイント:
3.1.3 StoragClassの作成storageclass.yamlファイルを編集します.詳細なパラメータの説明は次のとおりです.https://github.com/kubernetes-sigs/alibaba-cloud-csi-driver/blob/master/docs/nas-dynamic.md
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: alicloud-nas-subpath
mountOptions:
- nolock,tcp,noresvport
- vers=3
parameters:
  volumeAs: subpath
  server: "xxxxxxx.cn-hangzhou.nas.aliyuncs.com:/k8s/"
provisioner: nasplugin.csi.alibabacloud.com
reclaimPolicy: Retain

次のコマンドを実行してStorageClass alicloud-nas-subpathを作成します.
$ kubectl create -f storageclass.yaml

3.1.4 PV/PVCおよびPodマウントNASストレージボリュームの作成
Pod nginx-1 nginx-2共有NASストレージボリュームの同じサブディレクトリを作成します.pvc.yaml nginx-1.yamlおよびnginx-2.yamlファイルの内容は次のとおりです.pvc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: nas-csi-pvc
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: alicloud-nas-subpath
  resources:
    requests:
      storage: 20Gi
nginx-1.yaml :
apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-nas-1
  labels:
    app: nginx-1
spec:
  selector:
    matchLabels:
      app: nginx-1
  template:
    metadata:
      labels:
        app: nginx-1
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
        volumeMounts:
          - name: nas-pvc
            mountPath: "/data"
      volumes:
        - name: nas-pvc
          persistentVolumeClaim:
            claimName: nas-csi-pvc
nginx-2.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-nas-2
  labels:
    app: nginx-2
spec:
  selector:
    matchLabels:
      app: nginx-2
  template:
    metadata:
      labels:
        app: nginx-2
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
        volumeMounts:
          - name: nas-pvc
            mountPath: "/data"
      volumes:
        - name: nas-pvc
          persistentVolumeClaim:
            claimName: nas-csi-pvc

pvcとdeploymentを作成するには:
$ kubectl create -f pvc.yaml -f nginx-1.yaml -f nginx-2.yaml

$ kubectl get po
NAME                                READY   STATUS    RESTARTS   AGE
deployment-nas-1-5b5cdb85f6-nhklx   1/1     Running   0          32s
deployment-nas-2-c5bb4746c-4jw5l    1/1     Running   0          32s

この場合、NASストレージボリュームのxxxxxxx.cn-hangzhou.nas.aliyuncs.com:/share/nas-79438493-f3e0-11e9-bbe5-00163e09c2beは、deployment-nas-1-5b5cdb85f6-nhklxおよびdeployment-nas-2-c5bb4746c-4jw5l/dataディレクトリに同時にマウントされます.  : "/share" StorageClass subpath,"nas-79438493-f3e0-11e9-bbe5-00163e09c2be" pv name
同じNASファイルシステムの異なるサブディレクトリを異なるPodにマウントする必要がある場合は、pvc-1とnginx-1、pvc-2とnginx-2をそれぞれ作成する必要があります.

3.2 filesystemタイプのNASダイナミックストレージボリューム使用

: filesystem NAS , pv NAS , StorageClass reclaimPolicy Delete deleteVolume "true"
3.2.1使用シーン3.1 subpath では、まずNASファイルシステムとマウントポイントを手動で作成する必要があります.KubernetesアプリケーションでNASファイルシステムとマウントポイントを動的に作成および削除する必要がある場合は、filesystemタイプを使用します.  : filesystem NAS Pod , Pod
3.2.2 StorageClassの作成storageclass.yamlファイルを編集します.詳細なパラメータの説明は次のとおりです.https://github.com/kubernetes-sigs/alibaba-cloud-csi-driver/blob/master/docs/nas-dynamic.md
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: alicloud-nas-fs
mountOptions:
- nolock,tcp,noresvport
- vers=3
parameters:
  volumeAs: filesystem
  vpcId: "vpc-xxxxxxxxxxxx"
  vSwitchId: "vsw-xxxxxxxxx"
  deleteVolume: "false"
provisioner: nasplugin.csi.alibabacloud.com
reclaimPolicy: Retain

次のコマンドを実行してStorageClass alicloud-nas-subpathを作成します.
$ kubectl create -f storageclass.yaml

3.2.3 PV/PVCおよびPodマウントNASストレージボリュームの作成pvc.yaml nginx.yaml書類の内容は以下の通り:pvc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: nas-csi-pvc-fs
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: alicloud-nas-fs
  resources:
    requests:
      storage: 20Gi
nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-nas-fs
  labels:
    app: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
        volumeMounts:
          - name: nas-pvc
            mountPath: "/data"
      volumes:
        - name: nas-pvc
          persistentVolumeClaim:
            claimName: nas-csi-pvc-fs

pvcとdeploymentを作成するには:
$ kubectl create -f pvc.yaml -f nginx.yaml

このシナリオでは、csiはpvc作成時にNASファイルシステムとマウントポイントを動的に新規作成し、pvc削除時にマウントポイントとファイルシステムを動的に削除します.

4.その他


詳細は、「kubernetes-sigs/aliba-cloud-csi-driver/examples/nas/dynamic」を参照してください.
著者:流生
原文を読む
本文は雲栖コミュニティのオリジナル内容で、許可を得ずに転載してはならない.