开发者学堂课程【5分钟玩转阿里云容器服务:容器存储:容器网络文件系统CNFS】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1038/detail/15322
容器存储:容器网络文件系统 CNFS
内容介绍
一、什么是 CNFS?
二、Demo1:ACK 集群如何使用 cnfs
三、Demo2:共享数据、Quota 能力、扩容能
本次课程主要解决如何在 ACK 集群中使用 CNFS 存储以及 CNFS 存储的共享数据、Quota 能力和扩容能力。
一、什么是 CNFS?
针对容器中使用文件存储的优势和挑战,阿里云推出了容器网络文件系统 CNFS,内置在容器服务 ACK 中。
CNFS 通过将阿里云的文件存储抽象为一个 K8s 对象(CRD)进行独立管理,使用户可以在享受容器使用文件存储带来的便捷的同时,提高文件存储的性能和数据安全,并提供容器一致的声明式管理。
二、Demo1: ACK 集群如何使用 cnfs
在创建集群时,如果勾选创建默认 NAS 文件系统和 CNFS容器网络环境系统动态存储类型,将会在创建集群后辅助创建一个NAS文件系统和存储类。
首先观察集群中 CNFS 的状态,目前处于一种可用状态,记录了 NAS 所有的信息。
Storageclass的状态:名为alibabacloud-cnfs-nas,在parameters 处引用创建好的 cnfs 这个 crd 的名称。
用 Storageclass 创建负载,此为 statefulset,会挂在 PVC 的 storageclass,使用创建的默认的 storageclass,即 alibabacloud-cnfs-nas,大小为1G,accessModes 是 ReadWriteMany。
在创建时会调度到 cn/Hangzhou.172.16.0.162节点上,使用 nginx 镜像,nginx启动时通过 dd 命令把1G的文件写入 /data/test下面。
应用后查看 Pod 状态,进入容器查看挂载情况,创建好的 NAS文件系统挂载到 /data下,/data 大小为1G,说明创建的 sc 的 dd 命令执行成功。
三、Demo2: 共享数据、Quota 能力、扩容能
Demo2会引用 demo1中的数据,验证 PVC 的 Quota 能力以及对 PVC 进行扩容操作。
Demo2 的 yaml 创建一个 statefulset,也挂载 demo1 中的 PVC。
容器内的目录也是 /data,与 demo1 最大的区别是会调度到163节点上。
apply 后在 du-sh 看 data 目录,目录大小为1.1G,说明已共享到了 demo1 中写入的数据。使用 dd 写入数据验证 Quota 能力。
在使用 dd 写入数据时,如果提示 Disk quota exceeded 说明 quota 已经生效。
使用 k8s 的 patch 进行 PVC 扩容到5G。再使用 dd 指令写数据,如果没有报错说明扩容已经成功。