直接将 ceph 存储用于 docker 卷

直接将 ceph 存储用于 docker 卷

Docker 或 Kubernetes 是否支持 Ceph 存储接口(对象、red、cephfs)?

答案1

你可以通过快速谷歌轻松找到这个问题的答案,但无论如何我都会在这里给出答案,以供未来的读者使用。

ceph 网站上的一个很好的页面描述如何为 docker 执行此操作。快速总结一下,您需要 golang、librados-dev、librbd-dev、ceph-common 和 xfsprogs 的发行版本,设置 go、run并以 root 身份go get github.com/yp-engineering/rbd-docker-plugin运行rbd-docker-plugin --create --user=<ceph-user> --pool=<ceph-pool>,然后就可以使用rbd卷驱动程序。

库伯内斯也有关于卷安装的页面。我用过那个和

在 ceph 监视器上运行以下命令:

ceph auth get-key client.admin | base64 # admin key

ceph auth add client.kube mon 'allow r' osd 'allow rwx pool=<poolname>'
ceph auth get-key client.kube | base64 # client key

在 kubernetes 管理员上,运行以下命令

kubectl create secret generic ceph-admin-secret --type="kubernetes.io/rbd" \
--from-literal=key='<admin key>' \
--namespace=kube-system

kubectl create secret generic ceph-client-secret --type="kubernetes.io/rbd" \
--from-literal=key='<client key>' \
--namespace=kube-system

cat << EOF | kubectl apply -f -
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: <storage class name you want>
provisioner: kubernetes.io/rbd
parameters:
  monitors: <ceph monitor ip>:<ceph monitor port>
  adminId: client.admin
  adminSecretName: ceph-admin-secret
  adminSecretNamespace: kube-system
  pool: kube
  userId: client.kube
  userSecretName: ceph-client-secret
  fsType: <filesystem type>
  imageFormat: <image format>
  imageFeatures: <image features>
EOF

相关内容