在阿里云容器服务中使用NAS(NFS)数据卷
Docker的特性,决定了容器本身是非持久化的,容器被删除后其中的数据也一并被删除了。Docker提供数据卷(Volume),通过挂载宿主机上的目录来实现持久存储。
但宿主机上的数据卷有很大的局限性
- 容器在机器间迁移时,数据无法迁移
- 不同机器之间不能共享数据卷
为了解决这些问题,阿里云容器服务提供第三方数据卷,将各种云存储包装成数据卷,可以直接挂载在容器上,不同容器间可以共享,并在容器重启、迁移时自动重新挂载。
在上一篇文章中,我们介绍了如何使用OSS做为数据卷。OSSFS简单方便,但OSS作为对象存储,用来虚拟文件系统有其天生的缺陷:
- 修改文件会导致整个文件重写
- 元数据操作,例如list directory,性能较差,因为需要远程访问OSS服务器
- 文件/文件夹的rename操作不是原子的
很多用户都希望使用NFS作为数据卷的后端存储。随着阿里云NAS产品的公测,阿里云容器服务迅速地把这一功能集成了进来。
阿里云NAS
阿里云NAS是面向阿里云ECS实例的文件存储服务,提供标准的文件访问协议,用户无需对现有应用做任何修改,即可使用具备无限容量及性能扩展、单一命名空间、多共享、高可靠和高可用等特性的分布式文件系统。
关于NAS的使用方法,请参考其帮助文档。后面的介绍假设你已经创建好了一个NAS实例,并添加了阿里云容器服务集群所在VPC的挂载点。
在阿里云容器服务上创建NAS数据卷
在NAS控制台中,找到要使用的NAS实例,如下图所示。
目前阿里云NAS只开放了杭州region、VPC访问方式,所以只有在杭州region的VPC容器服务集群才能看到创建NAS数据卷的入口,如下图所示。
- 数据卷名:在集群内必须唯一
- 文件系统ID:NAS实例的ID
- 挂载点域名:NAS实例在集群所在VPC的访问域名
点击创建就会在集群的所有节点上创建名字相同的NAS数据卷。
使用NAS数据卷
NAS数据卷使用方法跟本机数据卷相同。
- 通过镜像创建应用:在数据卷的“主机路径”处填写数据卷名,如下图所示
- 通过编排文件创建应用:在volumes一节中,第一个冒号前填写数据卷名
volumes:
- o1:/aaa
- /tmp:/bbb