目的
您可以通过 Ceph csi 在 Kubernetes v1.13 和更高版本中使用 Ceph Block Device images
该映像动态地提供 RBD images 映射为 Kubernete 卷
将这些 RBD images 映射为运行引用 RBD 支持卷的 pod 节点上的块设备
Ceph 将块设备映像作为集群中的对象进行条带化
参考
说明
要使用 ceph block device,需要在 kubenetes 上安装配置 ceph-csi
参考图

kubenetes 通过 csi 可以通过两种方法访问 转换为 rados 协议
内核模块,不建议,因为代码更新比较慢
rbd-nbd 命令工具,通过 librbd 转换为 rados (建议,因为代码更新比较快)
转换为 ceph 协议后就可以与 ceph mon, osd 进行直接沟通
ceph 准备
创建池
ceph osd pool create kubernetes
初始化池
rbd pool init kubernetes
创建用户
ceph auth get-or-create client.kubernetes mon 'profile rbd' osd 'profile rbd pool=kubernetes' mgr 'profile rbd pool=kubernetes'
[client.kubernetes]
key = AQAjFtVjmlXdNhAAqM1DHhf2gZEUO2eo05Ka+w==
kubenetes 配置
创建 configmap 用于配置 ceph mon
cat csi-config-map.yaml
---
apiVersion: v1
kind: ConfigMap
data:
config.json: |-
[
{
"clusterID": "aa0e0954-4abd-41d3-9fcf-b38a8159167a",
"monitors": [
"10.189.20.100:6789",
"10.189.20.101:6789",
"10.189.20.102:6789"
]
}
]
metadata:
name: ceph-csi-config
# kubectl apply -f csi-config-map.yaml
configmap/ceph-csi-config created
# kubectl get ConfigMap
NAME DATA AGE
ceph-csi-config 1 17s
kube-root-ca.crt 1 18d
创建 configmap 配置 kms
由于当前没有配置 kms 管理
因此 config.json 中为空
# ca csi-kms-config-map.yaml
---
apiVersion: v1
kind: ConfigMap
data:
config.json: |-
{}
metadata:
name: ceph-csi-encryption-kms-config
# kubectl apply -f csi-kms-config-map.yaml
configmap/ceph-csi-encryption

本文详细介绍了如何在 Kubernetes 1.24 中配置 Ceph-CSI,以利用 Ceph Block Device 动态提供 RBD images 作为卷,并通过 librbd 将其转换为 Rados 协议进行通信。内容包括 Ceph 池的创建、Kubernetes 的配置、存储类和 PVC 的创建等步骤。

327

被折叠的 条评论
为什么被折叠?



