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/dev
  •    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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM