最新版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

相关推荐
珂玥c1 天前
Ceph集群新增osd
ceph
老wang你好2 天前
Ceph分布式存储系统全解析
ceph
一个行走的民15 天前
分布式系统中 Map 增量(Delta)是否需要持久化
ceph
一个行走的民17 天前
BlueStore 核心原理与关键机制
ceph
奋斗的小青年I19 天前
Proxmox VE Ceph 超融合集群落地实战
windows·ceph·vmware·pve·超融合·proxmox
一个行走的民19 天前
深度剖析 Ceph PG 分裂机制:原理、底层、实操、影响、线上避坑(最全完整版)
ceph·算法
一个行走的民19 天前
Ceph 核心概念精讲:彻底搞懂 PG、PGP、pg_num、pgp_num
ceph
Mr.王8351 个月前
Kubernetes宿主机本地盘池化管理
ceph·云原生·容器·kubernetes
一个行走的民1 个月前
CEPH OSD心跳机制
ceph
一个行走的民1 个月前
Ceph PG 状态详解与线上故障处理
网络·ceph