前言

之前写过K8S应用阿里云存储卷,并在helm装置redis、rabbitmq和elasticsearch的过程中应用alicloud-nas-fs,然而预先发现,每次装置都会反复生成NAS,然而NAS每个账号最多增加20个,所以这不合乎需要,通过跟阿里工程师的沟通之后,他们举荐应用CNFS来做为存储媒介,所有服务都共享同一个NAS文件系统,当初记录下来分享给大家。

CNFS概述

传统的共享文件系统存在短少容量配额的准确管制、无奈复原误删文件、缺失存储卷容量性能等监控指标、无平安加密及小文件读写提早等问题。阿里云容器服务ACK推出了容器网络文件系统CNFS晋升NAS文件系统的性能,QoS管制。本文介绍容器网络文件系统CNFS的性能、存储规格、实用场景、应用限度及计费阐明。

应用CNF

这个是官网提供的操作文档:应用CNFS托管NAS文件系统,咱们只有看形式一:应用CNFS创立默认NAS文件系统即可。

# 创立CNFS、storageclass和deployment、statefulset对象。cat << EOF | kubectl apply -f -apiVersion: storage.alibabacloud.com/v1beta1kind: ContainerNetworkFileSystemmetadata:  name: cnfs-nas-filesystemspec:  description: "cnfs"  type: nas  reclaimPolicy: Retain #只反对Retain策略,删除CNFS时并不会删除NAS文件系统。  parameters:    encryptType: SSE-KMS #可选参数,不指定示意对文件不应用NAS托管加密,指定SSE-KMS示意开启此性能。    enableTrashCan: "true" #可选参数,不指定示意不关上回收站性能,指定true示意开启此性能。---apiVersion: storage.k8s.io/v1kind: StorageClassmetadata:  name: alibabacloud-cnfs-nasmountOptions:  - nolock,tcp,noresvport  - vers=3parameters:  volumeAs: subpath  containerNetworkFileSystem: cnfs-nas-filesystem  path: "/"provisioner: nasplugin.csi.alibabacloud.comreclaimPolicy: RetainallowVolumeExpansion: true #可选参数,指定为true示意容许对NAS文件系统进行扩容。---kind: PersistentVolumeClaimapiVersion: v1metadata:  name: cnfs-nas-pvcspec:  accessModes:    - ReadWriteMany  storageClassName: alibabacloud-cnfs-nas  resources:    requests:      storage: 70Gi #如果关上目录限额性能,则storage字段会失效,动态创建目录写入数据量最大为70 GiB。---apiVersion: apps/v1kind: Deploymentmetadata:  name: cnfs-nas-deployment  labels:    app: nginxspec:  selector:    matchLabels:      app: nginx  template:    metadata:      labels:        app: nginx    spec:      containers:      - name: nginx        image: nginx:1.14.2        volumeMounts:        - mountPath: "/data"          name: cnfs-nas-pvc      volumes:      - name: cnfs-nas-pvc        persistentVolumeClaim:          claimName: cnfs-nas-pvc---apiVersion: apps/v1kind: StatefulSetmetadata:  name: cnfs-nas-sts  labels:    app: nginxspec:  serviceName: "nginx"  replicas: 2  selector:    matchLabels:      app: nginx  template:    metadata:      labels:        app: nginx    spec:      containers:      - name: nginx        image: nginx:1.14.2        volumeMounts:        - mountPath: "/data"          name: www  volumeClaimTemplates:  - metadata:      name: www    spec:      accessModes: [ "ReadWriteOnce" ]      storageClassName: "alibabacloud-cnfs-nas"      resources:        requests:          storage: 50Gi #如果关上目录限额性能,则storage字段会失效,动态创建目录写入数据量最大为50 GiB。EOF

执行一下这个Yaml文件,k create -f xxx.yaml,查看生成状况。

# 执行以下命令查看创立的NAS文件系统kubectl get cnfs# 执行以下命令查看NAS文件系统的详细信息kubectl get cnfs/cnfs-nas-filesystem -o yaml

同理,你能够在装置redis、rabbitmq、elasticsearch中都能够应用alicloud-cnfs-nas这个StorageClass来创立NAS共享存储,同时通过查看阿里控制台,NAS都只创立一个共享这一个。

总结

1、如果你想扩容CNFS,你能够查看应用CNFS主动扩容NAS存储卷