1、创建rbd pool --pg_num看情况设置,最好按小的来
ceph osd pool create rbd 128
rbd pool init rbd
2、为名为 rbd 的池创建一个新用户
ceph auth get-or-create client.rbd mon 'profile rbd' osd 'profile rbd pool=rbd' mgr 'profile rbd pool=rbd'
# 操作正常返回:
[client.rbd]
key = AQBYAIlft1ACFRAAaCwh6XjiUZSPW841oBmQdA==
3、生成ceph-csi的kubernetes configmap
[root@k8s-node-1 k8s-sh]# ceph mon dump
dumped monmap epoch 1
epoch 1
fsid e808ab4d-c7c8-46a2-b82a-59840020829e
last_changed 2020-10-15 20:28:28.739282
created 2020-10-15 20:28:28.739282
min_mon_release 14 (nautilus)
0: [v2:172.23.5.158:3300/0,v1:172.23.5.158:6789/0] mon.k8s-node-2
1: [v2:172.23.6.214:3300/0,v1:172.23.6.214:6789/0] mon.k8s-node-1
2: [v2:172.23.6.215:3300/0,v1:172.23.6.215:6789/0] mon.k8s-node-3
注意:
这里一共有两个需要使用的信息,第一个是fsid(可以称之为集群id),第二个是监控节点信息0: [v2:172.23.5.158:3300/0,v1:172.23.5.158:6789/0] mon.k8s-node-2(可能有多个,这里配置了0 1 2 三个)
另外,目前的ceph-csi只支持V1版本的协议,所以监控节点那里我们只能用v1的那个IP和端口号
用以上信息生成configmap:
cat <<EOF > csi-config-map.yaml
---
apiVersion: v1
kind: ConfigMap
data:
config.json: |-
[
{
"clusterID": "e808ab4d-c7c8-46a2-b82a-59840020829e",
"monitors": [
"172.23.5.158:6789",
"172.23.6.214:6789",
"172.23.6.215:6789"
]
}
]
metadata:
name: ceph-csi-config
EOF
在kubernetes集群上,将此configmap存储到集群
kubectl apply -f csi-config-map.yaml
4、生成ceph-csi cephx的secret
cat <<EOF > csi-rbd-secret.yaml
---
apiVersion: v1
kind: Secret
metadata:
name: csi-rbd-secret
namespace: default
stringData:
userID: rbd
userKey: AQBYAIlft1ACFRAAaCwh6XjiUZSPW841oBmQdA==
EOF
这里就用到了之前生成的用户的用户id(kubernetes)和key
将此配置存储到kubernetes中
kubectl apply -f csi-rbd-secret.yaml
5、 ceph-csi 2.1 3.0版本部署时遇到的新问题
新版本的ceph-csi中需要一个ConfigMap,其名为ceph-csi-encryption-kms-config
解决方案:
找到需要用到它的yaml,注释掉所有相关引用
引用了该ConfigMap的yaml文件
deploy/rbd/kubernetes/csi-rbdplugin-provisioner.yaml
deploy/rbd/kubernetes/csi-rbdplugin.yaml
部署一个
样例路径ceph-csi/examples/kms/vault/kms-config.yaml