阿里云云盘
云盘概述
云盘是阿里云为云服务器 ECS 提供的数据块级别的块存储产品,具有低时延、高性能、持久性、高可靠等特点。
云盘采用分布式三副本机制,为 ECS 实例提供 99.9999999% 的数据可靠性保证。支持在可用区内自动复制您的数据,防止意外硬件故障导致的数据不可用,保护您的业务免于组件故障的威胁。就像硬盘一样,您可以对挂载到 ECS 实例上的云盘做分区、格式化、创建文件系统等操作,并对数据进行持久化存储。
更多云盘介绍可到 阿里云官方文档进行了解。
驱动的原理
阿里云盘驱动的原理 是通过阿里云盘 SDK 的方式远程创建出来一个云盘实例,供 kubernetes 使用。 阿里云盘根据 kubernetes 的存储规范,实现了一套阿里云 CSI 插件,可以通过 CSI 插件实现 kubernetes 对阿里云盘存储的生命周期管理。云盘 CSI 插件支持动态创建云盘数据卷、挂载数据卷。云盘是一种块存储类型,只能同时被一个负载使用(ReadWriteOnce)。
驱动的安装
git clone https://github.com/kubernetes-sigs/alibaba-cloud-csi-driver.git && cd alibaba-cloud-csi-driver
创建 k8s 账户
kubectl create -f ./deploy/rbac.yaml
确定账户创建成功
kubectl get sa -n kube-system
观察到 admin
账户说明创建成功
创建 csi-plugin
-
修改
deploy/disk/disk-plugin.yaml
中的环境变量ACCESS_KEY_ID
,ACCESS_KEY_SECRET
两个参数,替换成阿里云平台账户的AccessKey
信息, -
DaemonSet 的 apiVersion 不能使用版本
apps/v1beta2
,经测试可以使用apps/v1
。
阿里云平台账户的 AccessKey
信息到阿里云平台的 AccessKey
管理页面进行申请。这里不再赘述。
kubectl create -f ./deploy/disk/disk-plugin.yaml
确定是否创建成功
kubectl get ds -n kube-system
观察到 csi-diskplugin
的 Ready 为 1 说明该组件成功创建。
创建驱动
-
修改
deploy/disk/disk-provisioner.yaml
中的环境变量ACCESS_KEY_ID
,ACCESS_KEY_SECRET
两个参数,替换成阿里云平台账户的 accesskey 信息。 -
在 kubernetes 1.16 版本中 StatefulSet 的 apiVersion 不能使用
apps/v1beta1
,经测试可以使用apps/v1
需要在 spec 下添加 selector 的信息
selector:
matchLabels:
app: csi-disk-provisioner
kubectl create -f ./deploy/disk/disk-provisioner.yaml
确定 csi-provisioner 是否创建成功,Ready 为 1 说明成功
kubectl get statefulset -n kube-system