问题
- 同事给了一个任务,habor想使用cephfs做后端存储,同时想使用storageclass动态分配pv
步骤
- 下载external-storage
1
# go get github.com/kubernetes-incubator/external-storage
创建cephfs命名空间
1 | # cat namespace.yaml |
部署external-storage
链接: https://github.com/kubernetes-incubator/external-storage/blob/master/ceph/cephfs/deploy/README.md
使用rbac role的 provider
1
2
3
4# cd $GOPATH/src/github.com/kubernetes-incubator/external-storage/ceph/cephfs/deploy
# NAMESPACE=cephfs
# sed -r -i "s/namespace: [^ ]+/namespace: $NAMESPACE/g" ./rbac/*.yaml
# kubectl -n $NAMESPACE apply -f ./rbac –n cephfs注:使用没有rbac部署的external-storage创建的pvc失败,后面再研究一下
这个会在cephfs命名空间下面创建一个pod,这个pod不会去调用cephfs创建pv
创建cephfs的secret
1 | # cat ceph-secret.yaml |
创建StorageClass
1 | # cat sc.yaml |
创建pvc
1 | # cat pvc_with_sc.yaml |
- 创建完pvc的时候会有pv创建,并且在cephfs中会有相应的目录创建
在cephfs根目录下的volumes/kubernetes/kubernetes这个文件夹下
使用pvc创建pod
1 | # cat pod_with_cephfs_pvc.yaml |
mount可以看到这个挂载关系
遇到的问题
之前pod一直创建不起来,打开了mds的日志看了一下,说client少FILE_LAYOUT_V2这个特性
解决办法传送门:
https://stackoverflow.com/questions/48026677/ceph-luminous-rbd-map-hangs-forever?rq=1
用内核挂载文件系统内核有版本要求,我目前是3.10,我升到了最新的4.18,然后就ok了。