使用NAS动态存储卷创建有状态应用
最近更新时间: 2022-06-09 02:03:21
本方案实现的动态 NAS 卷,是在某个 NAS 文件系统下通过创建子目录并把子目录映射为一个动态 PV 提供给应用。
# 前提条件
使用此方案,需要在集群中部署 Flexvolume 驱动(Kubernetes 集群默认已部署该驱动)。
您已经部署了 alicloud-nas-controller。请参见 安装与升级 Flexvolume 组件 (opens new window) 。
# 创建动态 NAS 卷
配置 StorageClass。 配置示例如下:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-nas mountOptions: - nolock,tcp,noresvport - vers=3 parameters: server: "23a9649583-iaq37.cn-shenzhen.nas.aliyuncs.com:/nasroot1/" driver: flexvolume provisioner: alicloud/nas reclaimPolicy: Delete
说明
- mountOptions:表示生成的 PV options 配置,挂载 NAS 卷时使用这个 options 挂载。
- server:表示生成目标 PV 所使用 NAS 挂载点列表。格式为 nfsurl1:/path1,nfsurl2:/path2;当配置多个 server 时,通过此 StorageClass 创建的 PV 会轮询使用上述 server 作为配置参数;极速 NAS 配置路径需要以/share 开头。
- driver:支持 Flexvolume、NFS 两种驱动,默认为 NFS。
- reclaimPolicy:PV 的回收策略,建议配置为 Retain。
- 当配置为 Delete 时,删除 PV 后 NAS 文件系统中的对应目录会默认修改名字(例如,path-name 会被修改为 archived-path-name)。
- 如果需要删除文件系统中对应的存储目录,可在 StorageClass 中配置 archiveOnDelete 为 false。
使用动态卷
apiVersion: v1 kind: Service metadata: name: nginx labels: app: nginx spec: ports: - port: 80 name: web clusterIP: None selector: app: nginx --- apiVersion: apps/v1 kind: StatefulSet metadata: name: web spec: serviceName: "nginx" replicas: 5 volumeClaimTemplates: - metadata: name: html spec: accessModes: - ReadWriteOnce storageClassName: alicloud-nas resources: requests: storage: 2Gi template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:alpine volumeMounts: - mountPath: "/data" name: html
上一篇: 为文件系统创建普通用户可读写的子目录 挂载NFS文件系统到云服务器Linux