k8s 使用ceph存储

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s 使用ceph存储相关的知识,希望对你有一定的参考价值。

总结:

1、ceph创建提供给k8s使用的pool池
2、k8s安装ceph客户端ceph-common,拷贝ceph存储的 ceph-conf和 ceph.client.admin.keyring 到/etc/ceph
3、生成加密key,提供给k8s的secret 使用
4、k8s 创建secret 提供给storageclass授权使用ceph
5、k8s 创建storageclass 提供给pvc 调用
6、k8s 创建pvc 提供给deployment 资源调用

以下为详细步骤:
1、在ceph存储创建给k8s使用的pool池
1.1、查看现有的 pool池
ceph osd lspools
1.2、创建pool池
ceph osd pool create k8s 128
ceph osd create pool ${poolname} ${pg_num} ${pgp_num}
这里强制选择pg_num和pgp_num,因为ceph集群不能自动计算pg数量。下面有一些官方建议的pg使用数量:
小于5个osd设置pg_num为128
5到10个osd设置pg_num为512
10到50个osd设置pg_num为1024
如果超过50个osd你需要自己明白权衡点,并且能自行计算pg_num的数量
1.3、检查rbd这个pool里已存在的PG和PGP数量
ceph osd pool get k8s pg_num(pgp_num)

2、k8s 安装客户端 ceph-common(客户端版本和ceph版本最好保持一致)
2.1 拷贝服务端的ceph-conf和 ceph.client.admin.keyring 到/etc/ceph

3、生成加密key
`grep key /etc/ceph/ceph.client.admin.keyring |awk ‘{printf "%s", $NF}‘|base64`

4、创建secret
`apiVersion: v1

data:
key: QVFCSlQ2RmRESGQrSmhBQUdGMnNBcVVjbXB2MzNNVDQ5TVZqcnc9PQ==
kind: Secret
metadata:
name: ceph-admin-secret
namespace: kube-system
type: kubernetes.io/rbd`

5、创建storageclass

allowVolumeExpansion: true
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
  name: rbd
parameters:
  adminId: admin
  adminSecretName: ceph-admin-secret
  adminSecretNamespace: kube-system
  fsType: ext4
  imageFeatures: layering
  imageFormat: "2"
  monitors: 10.83.75.6:6789,10.83.75.7:6789,10.83.75.8:6789
  pool: k8s
  userId: admin
  userSecretName: ceph-admin-secret
  userSecretNamespace: kube-system
provisioner: kubernetes.io/rbd
reclaimPolicy: Retain
volumeBindingMode: Immediate

以上是关于k8s 使用ceph存储的主要内容,如果未能解决你的问题,请参考以下文章

k8s 集群部署rook-ceph存储系统及使用

K8S使用ceph-csi持久化存储之CephFS

K8S使用Ceph做持久化存储

Ceph持久化存储为k8s应用提供存储方案

k8s对接ceph存储

k8s分布式存储-Ceph