CentOS7.5安装OpenStack Rocky版本 (3)

保存上述两个文件,并执行kubectl apply

kubectl apply -f cephfs-provisioner-rbac.yaml kubectl apply -f cephfs-provisioner-deployment.yaml 导入秘钥 ceph auth get-key client.admin > /tmp/secret kubectl create ns cephfs kubectl create secret generic ceph-secret-admin --from-file=http://www.likecs.com/tmp/secret --namespace=cephfs 创建Storage class kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: cephfs provisioner: ceph.com/cephfs parameters: monitors: 172.16.31.11:6789 adminId: admin adminSecretName: ceph-secret-admin adminSecretNamespace: "cephfs" claimRoot: /pvc-volumes 创建pvc kind: PersistentVolumeClaim apiVersion: v1 metadata: name: cephfs spec: storageClassName: cephfs accessModes: - ReadWriteMany resources: requests: storage: 1Gi 创建deployment apiVersion: apps/v1 kind: Deployment metadata: labels: app: test-cephfs name: test-cephfs namespace: default spec: replicas: 1 selector: matchLabels: app: test-cephfs template: metadata: labels: app: test-cephfs spec: containers: - image: zerchin/network imagePullPolicy: IfNotPresent name: test-rbd volumeMounts: - mountPath: /data name: cephfs volumes: - name: cephfs persistentVolumeClaim: claimName: cephfs 常见问题 问题:无法挂载cephfs MountVolume.SetUp failed for volume "pvc-e4373999-8380-4211-99c5-5d096f234b35" : CephFS: mount failed: mount failed: exit status 5 Mounting command: mount Mounting arguments: -t ceph -o <masked>,<masked> 172.16.29.5:6789:/pvc-volumes/kubernetes/kubernetes-dynamic-pvc-b3e72054-4dc7-11eb-abdd-f21be6c36b31 /var/lib/kubelet/pods/5986dc99-b707-4ea9-b6b2-ae7ffd457c99/volumes/kubernetes.io~cephfs/pvc-e4373999-8380-4211-99c5-5d096f234b35 Output: modprobe: ERROR: ../libkmod/libkmod.c:586 kmod_search_moddep() could not open moddep file '/lib/modules/4.4.247-1.el7.elrepo.x86_64/modules.dep.bin' modprobe: FATAL: Module ceph not found in directory /lib/modules/4.4.247-1.el7.elrepo.x86_64 failed to load ceph kernel module (1) mount error 5 = Input/output error

此时手动在后台使用mount.ceph挂载对应的目录也挂载不上

原因

在 cephfs_provisoner.py 的实现中,默认添加了对 cephfs namespace 的支持,因此在对 volume 授权时会添加对 namespace 相关的权限设置。因为,我们使用的 ceph 版本 luminous 没有对 namespace 进行支持,所以,在使用时产生了创建的 volume 挂载到 pod 内后没有读写权限"input/output error"的问题。 此时,你在 cephfs 端查看卷的读写权限时,你可以看到目录读写权限都是问号。于是我们修改了这部分逻辑,去掉了 namespace 相关的部分。

解决

设置ceph-provisioner启动时添加该参数-disable-ceph-namespace-isolation

参考:https://www.infoq.cn/article/jqhjzvvl11escvfydruc

扩展 高可用

添加多个mon

ceph-deploy mon add ceph-02 ceph-03

当ceph集群有多个mon时,ceph会同步mon并形成仲裁,检查仲裁状态命令如下:

ceph quorum_status --format json-pretty

添加mgr

ceph-deploy mgr create ceph-02 ceph-03

查看集群状态

ceph -s 节点清理ceph ceph-deploy purge [ceph-node] ceph-deploy purgedata [ceph-node] ceph-deploy forgetkeys rm ceph.*

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsfpjf.html