【云原生】基于Kubernetes开发的阿里云ACK之存储管理
目录
- Kubernetes存储简介
- Kubernetes存储核心概念
- Kubernetes存储分类
- ACK的存储组件
- 1、Flexvolume
- 2、CSI
- 3、Flexvolume和CSI的对比
- 4、推荐使用CSI组件
- 1)阿里云ACK的CSI
- 2)OSS、NAS、云盘 对比
Kubernetes存储简介
Kubernetes存储核心概念
Kubernetes存储分类
主要分为:In-tree
和Out-of-tree
ACK的存储组件
1、Flexvolume
FlexVolume 是 Kubernetes v1.8+ 支持的一种存储插件扩展方式。类似于 CNI 插件,它需要外部插件将二进制文件放到预先配置的路径中(如 /usr/libexec/kubernetes/kubelet-plugins/volume/exec/),并需要在系统中安装好所有需要的依赖。可以想到,这是一种out-of-tree的扩展方式,不需要新增加一种存储插件,去更改k8s的源码。
2、CSI
Kubernetes 从 1.9 版本开始引入容器存储接口 Container Storage Interface(CSI)机制,用于在 Kubernetes 和外部存储系统之间建立一套标准的存储管理接口,通过该接口为容器提供存储服务。CSI 到 Kubernetes 1.10 版本升级为 Beta 版,到 Kubernetes 1.13 版本升级为 GA 版,已逐渐成熟
3、Flexvolume和CSI的对比
Flexvolume 只是给 kubernetes 这一个编排系统来使用的,而 CSI 可以满足不同编排系统的需求,比如 Mesos,Swarm。
其次 CSI 是容器化部署,可以减少环境依赖,增强安全性,丰富插件的功能。
我们知道,Flexvolume 是在 host 空间一个二进制文件,执行 Flexvolum 时相当于执行了本地的一个 shell 命令,这使得我们在安装 Flexvolume 的时候需要同时安装某些依赖,而这些依赖可能会对客户的应用产生一些影响。因此在安全性上、环境依赖上,就会有一个不好的影响。
同时对于丰富插件功能这一点,我们在 Kubernetes 生态中实现 operator 的时候,经常会通过RBAC 这种方式去调用 Kubernetes 的一些接口来实现某些功能,而这些功能必须要在容器内部实现,因此像 Flexvolume 这种环境,由于它是 host 空间中的二进制程序,就没法实现这些功能。而 CSI 这种容器化部署的方式,可以通过 RBAC 的方式来实现这些功能。
摘自:https://blog.csdn.net/qq_34556414/article/details/120004267
4、推荐使用CSI组件
1)阿里云ACK的CSI
注:阿里云OSS不支持不支持动态存储绑定