You need to enable JavaScript to run this app.
导航
通过协议服务 NFS 使用 vePFS
最近更新时间:2024.08.20 16:29:49首次发布时间:2024.06.05 14:02:10

容器服务支持通过协议服务 NFS 使用 vePFS 文件存储,本文以 kubectl 命令行方式为例,为您介绍如何通过协议服务 NFS 使用 vePFS 文件存储。

说明

【邀测】协议服务 NFS 目前处于邀测阶段,如需使用,请联系售前经理或 提交申请

前提条件

  • 已经开通 vePFS 协议服务功能,并创建 NFS 协议类型的 vePFS 文件存储。
  • 已经在本地安装 kubectl 工具,并通过 kubectl 连接目标集群。详细说明参见:连接集群

操作步骤

通过协议服务 NFS 使用 vePFS 文件存储支持静态制备和动态制备两种方式,可根据实际情况选择,详细使用说明如下。

方式一:使用 vePFS 静态存储卷

步骤一:创建存储卷

  1. 创建 PV 的 YAML 文件。示例文件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 类型。
  1. 执行以下命令,创建 PV。
kubectl create -f vke-vepfs-static-pv.yaml

步骤二:创建存储卷声明

  1. 创建 PVC 的 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 名称。
  1. 执行以下命令,创建 PVC。
kubectl create -f vke-vepfs-static-pvc.yaml
  1. 执行以下命令,查看 PVC 与 PV 的静态绑定结果。
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

  1. 创建 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 名称。
    
  2. 执行以下命令创建 Deployment。

kubectl apply -f deployment-nginx-static.yaml

方式二:使用 vePFS 动态存储卷

步骤一:创建存储类

  1. 创建 StorageClass 的 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
  1. 执行以下命令,创建 StorageClass。
kubectl create -f vke-vepfs-sc.yaml

步骤二:创建存储卷声明

  1. 创建 PVC 的 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 名称。
  1. 执行以下命令,创建 PVC。
kubectl create -f vke-vepfs-dynamic-pvc.yaml
  1. 执行以下命令,查看 PVC 与 StorageClass 的动态绑定结果。
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

  1. 创建 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 名称。
    
  2. 执行以下命令创建 Deployment。

kubectl apply -f deployment-nginx-dynamic.yaml