Kubernetes Cephfs 多pod挂载

网友投稿 1316 2022-11-07

Kubernetes Cephfs 多pod挂载

Kubernetes Cephfs 多pod挂载

文件系统cephfs

Ceph文件系统(CephFS)是一个符合POSIX标准的文件系统,它使用Ceph存储集群来存储其数据。 Ceph文件系统使用与Ceph块设备相同的Ceph存储集群系统。

用户可以在块设备上创建xfs文件系统,也可以创建ext4等其他文件系统,Ceph集群实现了自己的文件系统来组织管理集群的存储空间,用户可以直接将Ceph集群的文件系统挂载到用户机上使用,Ceph有了块设备接口,在块设备上完全可以构建一个文件系统,那么Ceph为什么还需要文件系统接口呢?

主要是因为应用场景的不同,Ceph的块设备具有优异的读写性能,但不能多处挂载同时读写,目前主要用在OpenStack上作为虚拟磁盘,而Ceph的文件系统接口读写性能较块设备接口差,但具有优异的共享性。

创建文件系统

创建好存储池后,你就可以用 fs new 命令创建文件系统了

[root@ master1-admin ceph]# ceph fs new xianchao cephfs_metadata cephfs_datanew fs with metadata pool 2 and data pool 1

其中:new后的fsname  可自定义

ceph rbd是不支持跨界点去挂载的。

之前创建了xianchao这个文件系统

[root@master ~]# ceph fs lsname: xianchao, metadata pool: cephfs_metadata, data pools: [cephfs_data ]

1、创建ceph子目录

为了别的地方能挂载cephfs,先创建一个secretfile

[root@master1-admin ~]# cat /etc/ceph/ceph.client.admin.keyring |grep key|awk -F" " '{print $3}' > /etc/ceph/admin.secret[root@master1-admin ~]# cat /etc/ceph/admin.secret AQC9axxhO3E3NRAABYfuB2VHIRFDABdstPhLsw==

挂载cephfs的根目录到集群的mon节点下的一个目录,比如xianchao_data,因为挂载后,我们就可以直接在xianchao_data下面用Linux命令创建子目录了。

可以看到已经将cephfs文件系统挂载在本地了

[root@master1-admin ~]# mkdir xianchao_dataYou have new mail in /var/spool/mail/root[root@master1-admin ~]# mount -t ceph 192.168.0.6:6789:/ /root/xianchao_data -o name=admin,secretfile=/etc/ceph/admin.secretYou have new mail in /var/spool/mail/root[root@master1-admin ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/vda1 20G 2.3G 17G 12% /devtmpfs 487M 0 487M 0% /devtmpfs 497M 0 497M 0% /dev/shmtmpfs 497M 57M 440M 12% /runtmpfs 497M 0 497M 0% /sys/fs/cgroup/dev/vdc1 15G 118M 15G 1% /var/lib/ceph/osd/ceph-0tmpfs 100M 0 100M 0% /run/user/0192.168.0.6:6789:/ 45G 368M 45G 1% /root/xianchao_data

在cephfs的根目录里面创建了一个子目录lucky,k8s以后就可以挂载这个目录

[root@master1-admin ~]# cd /root/xianchao_data/You have new mail in /var/spool/mail/root[root@master1-admin xianchao_data]# mkdir lucky[root@master1-admin xianchao_data]# chmod 0777 lucky/

2、测试k8s的pod挂载cephfs

1)创建k8s连接ceph使用的secret

将/etc/ceph/ceph.client.admin.keyring里面的key的值转换为base64,否则会有问题

[root@master1-admin ~]# echo "AQC9axxhO3E3NRAABYfuB2VHIRFDABdstPhLsw==" | base64QVFDOWF4eGhPM0UzTlJBQUJZZnVCMlZISVJGREFCZHN0UGhMc3c9PQo=You have new mail in /var/spool/mail/root

[root@master ceph]# vim cephfs-secret.yaml [root@master ceph]# kubectl apply -f cephfs-secret.yaml secret/cephfs-secret created[root@master ceph]# cat cephfs-secret.yaml apiVersion: v1kind: Secretmetadata: name: cephfs-secretdata: key: QVFDOWF4eGhPM0UzTlJBQUJZZnVCMlZISVJGREFCZHN0UGhMc3c9PQo=[root@master ceph]# kubectl apply -f cephfs-pv.yaml persistentvolume/cephfs-pv created

[root@master ceph]# kubectl get pvNAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGEcephfs-pv 1Gi RWX Recycle Available 42s

[root@master ceph]# cat cephfs-pvc.yaml kind: PersistentVolumeClaimapiVersion: v1metadata: name: cephfs-pvcspec: accessModes: - ReadWriteMany volumeName: cephfs-pv resources: requests: storage: 1Gi[root@master ceph]# kubectl apply -f cephfs-pvc.yaml persistentvolumeclaim/cephfs-pvc created[root@master ceph]# kubectl get pvcNAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGEcephfs-pvc Bound cephfs-pv 1Gi RWX 11s

创建第一个pod,挂载cephfs-pvc

[root@master ceph]# cat cephfs-pod-1.yaml apiVersion: v1kind: Podmetadata: name: cephfs-pod-1spec: containers: - image: nginx name: nginx imagePullPolicy: IfNotPresent volumeMounts: - name: test-v1 mountPath: /mnt volumes: - name: test-v1 persistentVolumeClaim: claimName: cephfs-pvc[root@master ceph]# kubectl apply -f cephfs-pod-1.yaml pod/cephfs-pod-1 created

创建第二个pod,挂载cephfs-pvc

[root@master ceph]# cat cephfs-pod-2.yaml apiVersion: v1kind: Podmetadata: name: cephfs-pod-2spec: containers: - image: nginx name: nginx imagePullPolicy: IfNotPresent volumeMounts: - name: test-v1 mountPath: /mnt volumes: - name: test-v1 persistentVolumeClaim: claimName: cephfs-pvc[root@master ceph]# kubectl apply -f cephfs-pod-2.yaml pod/cephfs-pod-2 created

[root@master ceph]# kubectl get podNAME READY STATUS RESTARTS AGEcephfs-pod-1 1/1 Running 0 86scephfs-pod-2 1/1 Running 0 47s

[root@master ceph]# kubectl exec -it cephfs-pod-1 -- /bin/sh# cd /mnt # touch welcome[root@master ceph]# kubectl exec -it cephfs-pod-2 -- /bin/sh# cd /mnt# touch test

回到master1-admin上,可以看到在cephfs文件目录下已经存在内容了

[root@master1-admin ~]# cd /root/xianchao_data/lucky/You have new mail in /var/spool/mail/root[root@master1-admin lucky]# lstest welcome

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:maven依赖的version声明控制方式
下一篇:信道 单工 半双工 全双工
相关文章

 发表评论

暂时没有评论,来抢沙发吧~