You can use the Flexvolume plug-in provided by Alibaba Cloud to use Apsara File Storage NAS in Container Service.

Prerequisites

Upgrade the Flexvolume plug-in to the latest version.

Background information

With the Flexvolume plug-in, you can use NAS file systems directly as volumes or by creating PVs and PVCs.
Parameters
  • server: The mount target of the NAS volume.
  • path: The mounted directory in the NAS file system. You can specify a sub-directory as a volume. If no sub-directory exists, the system automatically creates and mounts a sub-directory. To specify a directory in a NAS Extreme file system, the directory must start with /share.
  • vers: The version of the NFS protocol. Version 3 and 4.0 are supported. Default is version 3, which is also the recommended version. NAS Extreme file systems support NFS v3 only.
  • mode: The access permissions on the mounted directory. If the root directory of the NAS file system is specified as the mounted directory, you cannot modify the access permissions. If you set the mode parameter for a directory that stores a large amount of data, the process of mounting the directory to a cluster may take an excessive amount of time or even fail.
  • options: The mount parameter. If not specified, the default values are nolock,tcp,noresvport in version 3 and noresvport in version 4.0.

Directly as volumes

Use a nas-deploy.yaml file to create pods.

  1. Create the nas-deploy.yaml file with the following content.
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nas-static
      labels:
        app: nginx
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx
            ports:
            - containerPort: 80
            volumeMounts:
              - name: nas1
                mountPath: "/data"
          volumes:
          - name: "nas1"
            flexVolume:
              driver: "alicloud/nas"
              options:
                server: "0cd8b4a576-grs79.cn-hangzhou.nas.aliyuncs.com"
                path: "/k8s"
                vers: "3"
                options: "nolock,tcp,noresvport"
  2. Run the following command to create pods:
    kubectl apply -f nas-deploy.yaml

Through PVs and PVCs

  1. Create a PV
    You can create a PV through the console or by using a YAML file.
    • Create a PV by using a YAML file
      Use the following nas-pv.yaml file to create a PV.
      apiVersion: v1
      kind: PersistentVolume
      metadata:
        name: pv-nas
      spec:
        capacity:
          storage: 5Gi
        storageClassName: nas
        accessModes:
          - ReadWriteMany
        flexVolume:
          driver: "alicloud/nas"
          options:
            server: "0cd8b4a576-uih75.cn-hangzhou.nas.aliyuncs.com"
            path: "/k8s"
            vers: "3"
            options: "nolock,tcp,noresvport"
    • Create a PV through the console
      1. Log on to the Container Service console.
      2. In the left-side navigation pane, click Clusters.
      3. On the Clusters page, find the target cluster and click Manage in the Actions column.
      4. In the left-side navigation pane, choose Persistent Volumes. The PVs and PVCs page appears.
      5. On the Persistent Volumes tab, click Create in the upper-right corner.
      6. In the Create PV dialog box, set the following parameters.
        • PV Type: In this example, select NAS.
        • Volume Name: The name of the PV. The name must be unique in the cluster. In this example, enter pv-nas.
        • Capacity: The capacity of the PV. The capacity of the PV cannot exceed that of the NAS file system.
        • Access Mode: The default mode is ReadWriteMany.
        • Mount Target Domain Name: Specify the domain of the mount target that is used to mount the NAS file system to the cluster.
        • Subdirectory: Enter a sub-directory in the NAS file system. The sub-directory must start with a forward slash (/). If this parameter is set, the PV will be mounted to the sub-directory.
          • If the specified sub-directory does not exist, the system automatically creates this sub-directory.
          • This parameter is optional. The root directory of the NAS file system is mounted by default.
          • To specify a sub-directory in a NAS Extreme file system, the sub-directory must start with /share.
        • Permissions: Set the access permissions on the mounted directory. For example, 755, 644, or 777.
          Note

          You can set access permissions on sub-directories only.

          We recommend that you do not set this parameter when the mounted directory contains a large number of files. Otherwise, it may take a long time to run the chmod command.

          If the mounted directory is a sub-directory of the NAS file system, the Permissions parameter is optional.
          • By default, the original permissions are used.
          • Note the following points when you set the permissions:
            • For Flexvolume versions earlier than v1.14.6.15-8d3b7e7-aliyun, use the recursive mode when you change permission settings. The permissions on all files and directories under the mounted directory will be changed.
            • For Flexvolume v1.14.6.15-8d3b7e7-aliyun and later versions, configure the chmod (Change Mode) parameter to define how permission changes are applied.
        • chmod (Change Mode): Define how permission changes are applied. Currently, the non-recursive and recursive modes are supported.
          • Non-recursive mode: The permission change only takes effect on the mounted directory. The sub-directories and included files are not affected.
          • Recursive mode: The permission change takes effect on the mounted directory, the sub-directories, and included files.
          Note If you select the recursive mode for a mounted directory that contains a large number of files, the process of running the chmod command may take an excessive amount of time. The mount or unmount operation may fail. Exercise caution when you perform this operation.
        • Version: The version of the NFS protocol. We recommend that you use v3. NAS Extreme file systems support NFS v3 only.
        • Label: Attach labels to the PV.
      7. Click Create.
  2. Create a PVC
    Use the following nas-pvc.yaml file to create a PVC.
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-nas
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: nas
      resources:
        requests:
          storage: 5Gi
  3. Create pods.
    Use the following nas-pod.yaml file to create pods.
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nas-static
      labels:
        app: nginx
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx
            ports:
            - containerPort: 80
            volumeMounts:
              - name: pvc-nas
                mountPath: /data
          volumes:
            - name: pvc-nas
              persistentVolumeClaim:
                claimName: pvc-nas