k8s使用cephfs动态存储

参考https://github.com/kubernetes-incubator/external-storage/tree/master/ceph/cephfs

# 官方没有cephfs动态卷支持
# 使用社区提供的cephfs-provisioner

一、部署cephfs-provisioner

github地址:  https://github.com/kubernetes-retired/external-storage/tree/master/ceph/cephfs/deploy

kubectl create ns cephfs
kubectl apply -f rbac -n cephfs
[sysadm@ST-Middleware-05 k8s]$ kubectl -n cephfs get pod
NAME                                  READY   STATUS    RESTARTS   AGE
cephfs-provisioner-86794546cc-hbt8j   1/1     Running   0          23h
test-pod                              1/1     Running   0          20h

2、创建secret。在secret中,data域的各子域的值必须为key的base64编码值。key值为ceph.client.admin.keyring中的值

先对ceph.client.admin.keyring中的值进行base64编码

#echo "AQDchXhYTtjwHBAAk2/H1Ypa23WxKv4jA1NFWw==" | base64
QVFEY2hYaFlUdGp3SEJBQWsyL0gxWXBhMjNXeEt2NGpBMU5GV3c9PQo=

创建 ceph-secret.yaml

apiVersion: v1
kind: Secret
metadata:
  name: ceph-secret
namespace: cephfs data: key: QVFEY2hYaFlUdGp3SEJBQWsyL0gxWXBhMjNXeEt2NGpBMU5GV3c9PQo
=

3、配置 storageclass

---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: cephfs-dev
  namespace: cephfs
provisioner: ceph.com/cephfs
parameters:
  monitors: 192.168.130.135:6789,192.168.130.136:6789,192.168.130.137:6789
  adminId: admin
  adminSecretName: ceph-secret
  adminSecretNamespace: cephfs
  claimRoot: /volumes/kubernetes/devmonitors:
  •    provisioner: 该字段指定使用存储卷类型为 kubernetes.io/rbd,注意 kubernetes.io/ 开头为 k8s 内部支持的存储提供者,不同的存储卷提供者类型这里要修改成对应的值
  • monitors:  ceph监控节点
  • adminId:  这里需要指定两种 Ceph 角色 admin 和其他 user,admin 角色默认已经有了,其他 user 可以去 Ceph 集群创建一个并赋对应权限值,如果不创建,也可以都指定为 admin
  • adminSecretName:  为上边创建的 Ceph 管理员 admin 使用的 ceph-secret
  • claimRoot:   在ceph上的目录结构

4、创建test-pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: claim
  namespace: cephfs
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: cephfs-dev
  resources:
    requests:
      storage: 1Gi

5、创建test-pod.yaml

---
kind: Pod
apiVersion: v1
metadata:
  name: test-pod
  namespace: cephfs
spec:
  containers:
    - name: test-pod
      image: 10.2.57.16:5000/library/nginx:1.18.0
      volumeMounts:
        - name: pvc
          mountPath: "/data/cephfs"
  volumes:
    - name: pvc
      persistentVolumeClaim:
        claimName: claim
原文地址:https://www.cnblogs.com/deny/p/14788978.html