前言
之前写过 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/v1beta1
kind: ContainerNetworkFileSystem
metadata:
name: cnfs-nas-filesystem
spec:
description: "cnfs"
type: nas
reclaimPolicy: Retain #只反对 Retain 策略,删除 CNFS 时并不会删除 NAS 文件系统。parameters:
encryptType: SSE-KMS #可选参数,不指定示意对文件不应用 NAS 托管加密,指定 SSE-KMS 示意开启此性能。enableTrashCan: "true" #可选参数,不指定示意不关上回收站性能,指定 true 示意开启此性能。---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: alibabacloud-cnfs-nas
mountOptions:
- nolock,tcp,noresvport
- vers=3
parameters:
volumeAs: subpath
containerNetworkFileSystem: cnfs-nas-filesystem
path: "/"
provisioner: nasplugin.csi.alibabacloud.com
reclaimPolicy: Retain
allowVolumeExpansion: true #可选参数,指定为 true 示意容许对 NAS 文件系统进行扩容。---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: cnfs-nas-pvc
spec:
accessModes:
- ReadWriteMany
storageClassName: alibabacloud-cnfs-nas
resources:
requests:
storage: 70Gi #如果关上目录限额性能,则 storage 字段会失效,动态创建目录写入数据量最大为 70 GiB。---
apiVersion: apps/v1
kind: Deployment
metadata:
name: cnfs-nas-deployment
labels:
app: nginx
spec:
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/v1
kind: StatefulSet
metadata:
name: cnfs-nas-sts
labels:
app: nginx
spec:
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 存储卷