容器服务支持通过协议服务 NFS 使用 vePFS 文件存储,本文以 kubectl 命令行方式为例,为您介绍如何通过协议服务 NFS 使用 vePFS 文件存储。
说明
【邀测】协议服务 NFS 目前处于邀测阶段,如需使用,请联系售前经理或 提交申请。
通过协议服务 NFS 使用 vePFS 文件存储支持静态制备和动态制备两种方式,可根据实际情况选择,详细使用说明如下。
vke-vepfs-static-pv.yaml
代码如下:apiVersion: v1 kind: PersistentVolume metadata: name: vke-vepfs-static-pv # PV 名称,建议 PV name 集群内唯一。 spec: accessModes: # 存储卷的访问方式,目前仅支持多点读写(ReadWriteMany)。 - ReadWriteMany capacity: storage: 20Gi # 声明的存储容量,Kubernetes 必填字段,但对 vePFS 没有意义,仅作为校验参数必填。 csi: driver: nas.csi.volcengine.com # NFS 协议服务的 vepfs 采用的驱动类型,本场景固定为 nas.csi.volcengine.com。 volumeAttributes: fsId: vepfs-cnbj1b9f******** # vepfs 文件系统 ID。 fsType: Vepfs # 文件系统类型,Extreme:极速型;Cache:缓存型;Capcity:容量型;Vepfs:vePFS 文件存储。 path: /vepfs/temp # 文件系统挂载子目录,前缀必须为 /vepfs。 server: nfs/vepfs/cngld624xx-vepfs-ivolces.com # vepfs 目标导出目录挂载点。 volumeAs: subpath # 创建的子目录类型。subpath:子路径;filesystem:文件系统。 volumeHandle: vke-vepfs-static-pv # PV 的唯一标识符,与 PV 名称保持一致。如需同时使用多个 PV,则各个 PV 中该值必须不一致。 mountOptions: - nolock,proto=tcp,noresvport - vers=3 # vepfs 仅支持 v3。 persistentVolumeReclaimPolicy: Retain # PV 回收策略。Retain 表示保留策略,Delete 表示删除策略。 volumeMode: Filesystem # PV 类型。
kubectl create -f vke-vepfs-static-pv.yaml
vke-vepfs-static-pvc.yaml
代码如下:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: vepfs-static-pvc # PVC 名称。 namespace: default # PVC 所属的命名空间。 spec: accessModes: # PVC 访问方式。目前仅支持 ReadWriteMany ,表示多点读写。 - ReadWriteMany resources: requests: storage: 20Gi # 声明的存储容量,Kubernetes 必填字段,但对 vePFS 没有意义,仅作为校验参数必填。 volumeName: vepfs-static-pv # 绑定到该 PVC 的 PV 名称。
kubectl create -f vke-vepfs-static-pvc.yaml
kubectl get pvc
预期输出结果如下,表示 PVC 与 PV 静态绑定成功。
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE vke-vepfs-static-pvc Bound vke-vepfs-static-pv 20Gi RWX 2m36s
创建 Deployment 的 YAML 文件。示例文件deployment-nginx-static.yaml
代码如下:
apiVersion: apps/v1 kind: Deployment metadata: name: deployment-nginx-static spec: selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx-c1 image: cr-cn-beijing.volces.com/****/vci-demo-nginx:latest # 指定需要部署的镜像文件。 ports: - containerPort: 80 name: nginx volumeMounts: - name: vepfs mountPath: /mnt/vepfs # vePFS 在容器中挂载的位置。 volumes: - name: vepfs persistentVolumeClaim: claimName: vepfs-static-pvc # 步骤二中创建的 PVC 名称。
执行以下命令创建 Deployment。
kubectl apply -f deployment-nginx-static.yaml
vke-vepfs-sc.yaml
代码如下:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: vepfs-nas-sc mountOptions: - nolock,proto=tcp,noresvport,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 - vers=3 parameters: ChargeType: PostPaid fsId: vepfs fsType: Vepfs server: cngl327ff4ed4078.3rei7p0lzu1a85zsk2j48kqtl-vepfs-ivolces.com subPath: /test volumeAs: subpath provisioner: nas.csi.volcengine.com reclaimPolicy: Retain volumeBindingMode: Immediate
kubectl create -f vke-vepfs-sc.yaml
vke-vepfs-dynamic-pvc.yaml
代码如下:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: vepfs-dynamic-pvc # PVC 名称。 namespace: default # PVC 所属的命名空间。 spec: accessModes: # PVC 访问方式。目前仅支持 ReadWriteMany ,表示多点读写。 - ReadWriteMany resources: requests: storage: 20Gi # 声明的存储容量,Kubernetes 必填字段,但对 vePFS 没有意义,仅作为校验参数必填。 storageClassName: vepfs-nas-sc # 步骤一中创建的 StorageClass 名称。
kubectl create -f vke-vepfs-dynamic-pvc.yaml
kubectl get pvc
预期输出结果如下,表示 vePFS 通过配置 StorageClass 完成了 PVC 与 PV 的动态绑定成功。
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS vepfs-dynamic-pvc Bound pvc-6e8c646b-e3e9-4d02-836e-3b66******** 20Gi RWX vepfs-nas-sc
创建 Deployment 的 YAML 文件。示例文件deployment-nginx-dynamic.yaml
代码如下:
apiVersion: apps/v1 kind: Deployment metadata: name: deployment-nginx-dynamic spec: selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx-c1 image: cr-cn-beijing.volces.com/****/vci-demo-nginx:latest # 指定需要部署的镜像文件。 ports: - containerPort: 80 name: nginx volumeMounts: - name: vepfs mountPath: /mnt/vepfs # vePFS 在容器中挂载的位置。 volumes: - name: vepfs persistentVolumeClaim: claimName: vepfs-dynamic-pvc # 步骤二中创建的 PVC 名称。
执行以下命令创建 Deployment。
kubectl apply -f deployment-nginx-dynamic.yaml