アリクラウドKubernetes CSI実践-NASダイナミックストレージボリューム使用
7280 ワード
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」を参照してください.
著者:流生
原文を読む
本文は雲栖コミュニティのオリジナル内容で、許可を得ずに転載してはならない.