导读
1 | 本文介绍k8s中部署ceph-csi,并实现动态扩容pvc的操作 |
环境版本
1 | [root@master kubernetes]# kubectl get node |
配置ceph-csi
- 创建新存储池
1 | ceph osd pool create kube |
- 新建用户
1 | # 为kube和ceph-csi创建用户 |
- 获取ceph集群信息
1 | [root@master kubernetes]# ceph mon dump |
- 拉取ceph-csi
1 | git clone https://github.com/ceph/ceph-csi |
- 修改cm
1 | cd ceph-csi/deploy/rbd/kubernetes |
- 新建secret
1 | # 创建csi-rbd-secret.yaml |
- RBAC授权
1 | # 如果有自定义ns,则在此修改 |
1 | # 创建必须的 ServiceAccount 和 RBAC ClusterRole/ClusterRoleBinding 资源对象 |
1 | # 创建 PodSecurityPolicy |
部署CSI sidecar
1 | # 将 csi-rbdplugin-provisioner.yaml 和 csi-rbdplugin.yaml 中的 kms 部分配置注释 |
- 部署csi-rbdplugin-provisioner
1 | kubectl create -f csi-rbdplugin-provisioner.yaml |
- 部署rbd csi driver
1 | kubectl ceph-csi create -f csi-rbdplugin.yaml |
1 | [root@master kubernetes]# kubectl get pod |grep csi-rbdplugin |
- 创建Storageclass
1 | [root@master kubernetes]# cat storageclass.yaml |
试用ceph-csi
Kubernetes通过persistentVolume子系统为用户和管理员提供了一组 API,将存储如何供应的细节从其如何被使用中抽象出来,其中PV(PersistentVolume)是实际的存储,pvc(PersistentVolumeClaim) 是用户对存储的请求。
1 | # 试用ceph-csi仓库自带的示例来演示 |
1 | # 查看pvc和申请成功的pv |
- pod测试
1 | kubectl exec -it csi-rbd-demo-pod bash |
- 查看ceph pool中的rbd images
1 | [root@master rbd]# rbd ls -p kube |
扩容pvc
- 扩展pvc
1 | # 直接修改yaml文件,将存储大小数字修改后apply |
- 扩容生效
1 | # csi driver会自动在存储端进行扩容,观察pvc状态变化,一般得耗时几秒钟 |
1 | # 如上图,可看到pvc成功扩展,describe pvc可查看到pvc resize |