最新版Ceph( Reef版本)块存储简单对接k8s

当前ceph

你的ceph集群上执行

js 复制代码
1.创建名为k8s-rbd 的存储池
ceph osd pool create k8s-rbd  64 64

2.初始化
rbd pool init k8s-rbd

3 创建k8s访问块设备的认证用户
ceph auth get-or-create client.kubernetes mon 'profile rbd' osd 'profile rbd pool=k8s-rbd'

部署 ceph-rbd-csi

js 复制代码
cat <<EOF > csi-config-map.yaml
---
apiVersion: v1
kind: ConfigMap
data:
  config.json: |-
    [
      {
        "clusterID": "76e8c1f6-0baa-11ef-ae7a-bc24115bcbdc",
        "monitors": [
          "192.168.0.26:6789",
          "192.168.0.27:6789",
          "192.168.0.28:6789"
        ]
      }
    ]
metadata:
  name: ceph-csi-config
EOF


###说明###
"clusterID": "76e8c1f6-0baa-11ef-ae7a-bc24115bcbdc"  通过 ceph mon dump 中的 fsid 获取
创建名为"ceph-csi-encryption-kms-config"的ConfigMap,因没有使用KMS,配置内容为空(不能省略,否则后面容器启动会报错
js 复制代码
 cat <<EOF > csi-kms-config-map.yaml
---
apiVersion: v1
kind: ConfigMap
data:
  config.json: |-
    {}
metadata:
  name: ceph-csi-encryption-kms-config
EOF

最新版本的Ceph - CSI还需要另一个ConfigMap对象来定义Ceph配置,以添加到CSI容器内的Ceph .conf文件中:

js 复制代码
 cat <<EOF > ceph-config-map.yaml
---
apiVersion: v1
kind: ConfigMap
data:
  ceph.conf: |
    [global]
    auth_cluster_required = cephx
    auth_service_required = cephx
    auth_client_required = cephx
  keyring: |
metadata:
  name: ceph-config
EOF
创建 secret对象,存储访问ceph的 key
js 复制代码
cat <<EOF > csi-rbd-secret.yaml
---
apiVersion: v1
kind: Secret
metadata:
  name: csi-rbd-secret
  namespace: default
stringData:
  userID: kubernetes
  userKey: AQAnEjpmMbBeOhAA8SDvxVDYCGcOWtiQjhS+sg==
EOF

###说明###
userID 为上面在 ceph 集群中创建的 kubernetes
userKey 通过下面获取,这里无需通过 base64 加密,切记!

# ceph auth get client.kubernetes
[client.kubernetes]
	key = AQAnEjpmMbBeOhAA8SDvxVDYCGcOWtiQjhS+sg==
	caps mon = "profile rbd"
	caps osd = "profile rbd pool=k8s-rbd"

再部署官网提供的yaml文件

复制代码
$ kubectl apply -f https://raw.githubusercontent.com/ceph/ceph-csi/master/deploy/rbd/kubernetes/csi-provisioner-rbac.yaml
$ kubectl apply -f https://raw.githubusercontent.com/ceph/ceph-csi/master/deploy/rbd/kubernetes/csi-nodeplugin-rbac.yaml

$ wget https://raw.githubusercontent.com/ceph/ceph-csi/master/deploy/rbd/kubernetes/csi-rbdplugin-provisioner.yaml
$ kubectl apply -f csi-rbdplugin-provisioner.yaml

$ wget https://raw.githubusercontent.com/ceph/ceph-csi/master/deploy/rbd/kubernetes/csi-rbdplugin.yaml
$ kubectl apply -f csi-rbdplugin.yaml

创建SC

js 复制代码
 cat <<EOF > csi-rbd-sc.yaml
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
   name: csi-rbd-sc
provisioner: rbd.csi.ceph.com
parameters:
   clusterID: 76e8c1f6-0baa-11ef-ae7a-bc24115bcbdc
   pool: k8s-rbd <<<<<<<<<<<<<<<<<---------------(注意你的池)
   imageFeatures: layering
   csi.storage.k8s.io/provisioner-secret-name: csi-rbd-secret
   csi.storage.k8s.io/provisioner-secret-namespace: default
   csi.storage.k8s.io/controller-expand-secret-name: csi-rbd-secret
   csi.storage.k8s.io/controller-expand-secret-namespace: default
   csi.storage.k8s.io/node-stage-secret-name: csi-rbd-secret
   csi.storage.k8s.io/node-stage-secret-namespace: default
reclaimPolicy: Delete
allowVolumeExpansion: true
mountOptions:
   - discard
EOF

####创建一个pvc 试一试

js 复制代码
cat <<EOF > raw-block-pvc.yaml
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: raw-block-pvc
spec:
  accessModes:
    - ReadWriteOnce
  volumeMode: Block
  resources:
    requests:
      storage: 1Gi
  storageClassName: csi-rbd-sc
EOF

helm在部署一个redis

相关推荐
bgy66662 天前
Ceph 分布式存储完整实战指南:架构、部署与全场景运维
分布式·ceph·架构
SLD_Allen2 天前
Ceph配置RDMA和GPUDirect支持的具体技术方案
ceph·rdma·gpudirect
2401_834636993 天前
Ceph 分布式存储从入门到精通:架构解析 + cephadm 部署 + 存储池管理
ceph
吾皇斯巴达7 天前
ceph index-less桶可以用radosgw-admin bucket rm吗
ceph
运维全栈笔记19 天前
腾讯云 CVM 搭建 Ceph 集群部署笔记
笔记·ceph·腾讯云
刘某的Cloud21 天前
ceph osd 导入导出 rbd volume 卷
linux·运维·ceph·volume
heimeiyingwang21 天前
【架构实战】Kubernetes存储实战:从EmptyDir到Ceph CSI的持久化存储选型指南
ceph·架构·kubernetes
DLYSB_1 个月前
存储运维实战:基于 Ceph Event 监听与 Python 适配器的分布式存储健康度物理声光响应架构
运维·ceph·python·报警灯
AAA@峥1 个月前
Ceph 分布式文件系统 CephFS 实战指南
运维·分布式·ceph
AAA@峥1 个月前
Ceph RBD 块存储全解析:原理与实操汇总
运维·分布式·ceph