前提条件
k8s 集群
节点挂载空盘用于ceph osd
下载源文件,本文档是1.14.1Source code (tar.gz) (github.com)
解压进入deploy/examples目录,以下操作如果没有说明,都是在examples目录下操作
部署
部署operator
打开自动发现
修改operator.yaml 中的ROOK_ENABLE_DISCOVERY_DAEMON为true
修改镜像地址
国内访问不到google地址,使用修改为阿里云地址
,我这里使用私有仓库,只要保证可以拉取到即可。
1 | ROOK_CSI_CEPH_IMAGE: "registry.aliyuncs.com/google_containers/cephcsi:v3.10.2" |
开始部署
1 | kubectl apply -f crds.yaml -f common.yaml -f operator.yaml |
等待所有pod运行
如果这是你第一次安装,不需要初始化,否则需要将磁盘清空。谨慎操作!!!
1 | DISK=$1 |
集群中每个节点都运行以上脚本初始化磁盘
1 | $ ./cleanup.sh /dev/sdx # 将sdb盘清空,并删除ceph遗留文件 |
部署集群
修改cluster.yaml文件中的storage,如果想使用集群中所有的节点上的所有存储,使用默认配置即可
同时支持定义指定节点指定磁盘。如下,指定k8s-master01、2、3中的sd开头的磁盘
1 | storage: # cluster level storage configuration and selection |
如果指定单个磁盘
1 | storage: # cluster level storage configuration and selection |
开始部署
1 | kubectl apply -f cluster.yaml |
检查pod状态
部署工具
1 | kubectl apply -f toolbox.yaml |
1 | kubectl exec -it -n rook-ceph rook-ceph-tools-66b77b8df5-b7r22 -- bash |
1 | ceph -s # 检查状态 |
部署StorageClass并测试
使用cephfs
CephFS 共享文件系统(Shared Filesystem)适用于多个Pod之间共享读写(RWX)的存储
1 | kubectl apply -f filesystem.yaml |
等待文件系统状态ready
部署storageclass
1 | cd csi/cephfs |
检查状态
测试cephfs申请动态pvc
1 | kubectl apply -f pvc.yaml |
绑定成功
使用rbd存储
块存储(Block)适用于为单个 Pod 提供读写一致性(RWO)的存储
1 | cd csi/rbd |
测试rbd申请动态pvc
1 | kubectl apply -f pvc.yaml |
使用对象存储
对象存储(Object)提供了一个可通过内部或外部的Kubernetes集群的S3端点访问的存储
1 | kubectl apply -f object.yaml |
等待状态ready
部署storageclass
1 | kubectl create -f storageclass-bucket-delete.yaml |
测试使用对象存储
创建OBC对象存储桶
1 | kubectl apply -f object-bucket-claim-delete.yaml |
安装测试工具s5cmd
1 | wget https://github.com/peak/s5cmd/releases/download/v2.2.2/s5cmd_2.2.2_Linux-64bit.tar.gz |
设置凭证
可以使用一下命令生成,或者手动获取OBC同名secret,base64解码获取并写到配置文件
1 | export AWS_ACCESS_KEY_ID=$(kubectl -n default get secret ceph-delete-bucket -o jsonpath='{.data.AWS_ACCESS_KEY_ID}' | base64 --decode) |
测试获取桶列表
列出当前凭据可以访问的所有桶
1 | kubectl get svc -n rook-ceph |
1 | s5cmd --endpoint-url http://10.107.248.38 ls |
桶名称与configmap对应即可。
卸载
清空ceph的pvc资源(根据环境删除)
1 | kubectl delete pvc rbd-pvc cephfs-pvc |
删除storageclass
1 | kubectl delete sc rook-cephfs rook-ceph-block |
卸载集群
1 | kubectl delete -f cluster.yaml |
卸载工具
1 | kubectl delete -f toolbox.yaml |
卸载operator
1 | kubectl apply -f crds.yaml -f common.yaml -f operator.yaml |
清理磁盘
1 | $ ./cleanup.sh /dev/sdx |