k8s使用ceph的rbd作后端存储
k8s使用rbd作后端存储
k8s里的存储方式主要有三种。分别是volume、persistent volumes和dynamic volume provisioning。
- volume: 就是直接挂载在pod上的组件,k8s中所有的其他存储组件都是通过volume来跟pod直接联系的。volume有个type属性,type决定了挂载的存储是什么,常见的比如:emptyDir,hostPath,nfs,rbd,以及下文要说的persistentVolumeClaim等。跟docker里面的volume概念不同的是,docker里的volume的生命周期是跟docker紧紧绑在一起的。这里根据type的不同,生命周期也不同,比如emptyDir类型的就是跟docker一样,pod挂掉,对应的volume也就消失了,而其他类型的都是永久存储。详细介绍可以参考Volumes
- Persistent Volumes:顾名思义,这个组件就是用来支持永久存储的,Persistent Volumes组件会抽象后端存储的提供者(也就是上文中volume中的type)和消费者(即具体哪个pod使用)。该组件提供了PersistentVolume和PersistentVolumeClaim两个概念来抽象上述两者。一个PersistentVolume(简称PV)就是后端存储提供的一块存储空间,具体到ceph rbd中就是一个image,一个PersistentVolumeClaim(简称PVC)可以看做是用户对PV的请求,PVC会跟某个PV绑定,然后某个具体pod会在volume 中挂载PVC,就挂载了对应的PV。关于更多详细信息比如PV,PVC的生命周期,dockerfile 格式等信息参考Persistent Volumes
- Dynamic Volume Provisioning: 动态volume发现,比如上面的Persistent Volumes,我们必须先要创建一个存储块,比如一个ceph中的image,然后将该image绑定PV,才能使用。这种静态的绑定模式太僵硬,每次申请存储都要向存储提供者索要一份存储快。Dynamic Volume Provisioning就是解决这个问题的。它引入了StorageClass这个概念,StorageClass抽象了存储提供者,只需在PVC中指定StorageClass,然后说明要多大的存储就可以了,存储提供者会根据需求动态创建所需存储快。甚至于,我们可以指定一个默认StorageClass,这样,只需创建PVC就可以了。
PV的访问模式
- ReadWriteOnce:可读可写,但只支持被单个node挂载。
- ReadOnlyMany:只读权限,可以以只读的方式被多个node挂载。
- ReadWriteMany:可读可写,这种存储可以以读写的方式被多个node共享。
PV回收策略
- Retain – 手动重新使用
- Recycle – 基本的删除操作 (“rm -rf /thevolume/*”)
- Delete – 关联的后端存储卷一起删除,后端存储例如AWS EBS, GCE PD或OpenStack Cinder
在CLI下,访问方式被简写为:
RWO – ReadWriteOnce
ROX – ReadOnlyMany
RWX – ReadWriteMany
在当前的定义中,这三种方式都是针对节点级别的,也就是说,对于一个Persistent Volume, 如果是RWO, 那么只能被挂载在某一个Kubernetes的工作节点(以下简称节点)上,当再次尝试在其他节点挂载的时候,系统会报Multi-Attach的错误(当然,在只有一台可调度节点的情况,即使RWO也是能够被多个Pod同时使用的,但除了开发测试,有谁会这么用呢?); 如果是RMX, 那么可以同时在多个节点上挂载并被不同的Pod使用。
官方支持如下:
https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes
所以,我们这里是无法在多个node节点使用rbd的。
折中解决办法:
方法一:使用 NodeSelector标签,限制pod调度到指定的Node上。(如此便是单机)
方法二:不使用k8s,直接将rbd挂载到单台linux机器上。(也是单机)
开始使用rbd
每个k8s node都需要安装ceph客户端ceph-common,才能正常使用ceph
[root@k8s-node1 yum.repos.d]# cd /etc/yum.repos.d [root@k8s-node1 yum.repos.d]# pwd /etc/yum.repos.d # 这里ceph源最好和ceph存储系统里使用的保持一致,保证ceph客户端版本一致 [root@k8s-node1 yum.repos.d]# vim ceph.repo [Ceph] name=Ceph packages for $basearch baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/$basearch enabled=1 gpgcheck=0 type=rpm-md gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc priority=1 [Ceph-noarch] name=Ceph noarch packages baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch enabled=1 gpgcheck=0 type=rpm-md gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc priority=1 [ceph-source] name=Ceph source packages baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS enabled=1 gpgcheck=0 type=rpm-md gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc priority=1 # 安装ceph-common [root@k8s-node1 yum.repos.d]# yum -y install ceph-common
注:依赖包报错
# 如果yum安装ceph-common的时候,报这个错,则先安装epel-release [root@k8s-node1 yum.repos.d]# yum -y install ceph-common ... ---> Package python-six.noarch 0:1.9.0-2.el7 will be installed --> Finished Dependency Resolution Error: Package: 2:ceph-common-12.2.12-0.el7.x86_64 (Ceph) Requires: libleveldb.so.1()(64bit) Error: Package: 2:librados2-12.2.12-0.el7.x86_64 (Ceph) Requires: liblttng-ust.so.0()(64bit) Error: Package: 2:ceph-common-12.2.12-0.el7.x86_64 (Ceph) Requires: libbabeltrace-ctf.so.1()(64bit) Error: Package: 2:ceph-common-12.2.12-0.el7.x86_64 (Ceph) Requires: libbabeltrace.so.1()(64bit) Error: Package: 2:librbd1-12.2.12-0.el7.x86_64 (Ceph) Requires: liblttng-ust.so.0()(64bit) You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest # 安装epel-release [root@k8s-node1 yum.repos.d]# yum install epel-release # 此时,再次安装ceph-common即可安装上 [root@k8s-node1 yum.repos.d]# yum -y install ceph-common [root@k8s-node1 yum.repos.d]# ceph --version ceph version 12.2.12 (1436006594665279fe734b4c15d7e08c13ebd777) luminous (stable)
每个k8s-node都必须要安装ceph客户端,否则无法挂载
k8s-master上也安装
[root@k8s-master yum.repos.d]# cd /etc/yum.repos.d [root@k8s-master yum.repos.d]# yum -y install ceph-commo [root@k8s-master yum.repos.d]# ceph --version ceph version 12.2.12 (1436006594665279fe734b4c15d7e08c13ebd777) luminous (stable)
ceph配置(在ceph-admin节点设置)
# 创建存储池rbd_data,(我们测试环境之前创建过,所以略过) [cephfsd@ceph-admin ceph]$ ceph osd pool create rbd_data 64 64 # 创建rbd镜像 (因为我们之前配置里指定了format为1,所以这里不需要显示指定) [cephfsd@ceph-admin ceph]$ rbd create rbd_data/filecenter_image --size=10G # 映射该rbd镜像 [cephfsd@ceph-admin ceph]$ sudo rbd map rbd_data/filecenter_image /dev/rbd4 # 查看镜像信息 [cephfsd@ceph-admin ceph]$ rbd info rbd_data/filecenter_image rbd image 'filecenter_image': size 10GiB in 2560 objects order 22 (4MiB objects) block_name_prefix: rbd_data.376b6b8b4567 format: 2 features: layering flags: create_timestamp: Sat Dec 7 17:37:41 2019 [cephfsd@ceph-admin ceph]$ # 创建secret: # 在创建pv前,由于ceph是开启了cephx认证的,于是首先需要创建secret资源,k8s的secret资源采用的是base64加密 # 在ceph monitor上提取key: # 生成加密的key [cephfsd@ceph-admin ceph]$ cat ceph.client.admin.keyring [client.admin] key = AQBIH+ld1okAJhAAmULVJM4zCCVAK/Vdi3Tz5Q== [cephfsd@ceph-admin ceph]$ ceph auth get-key client.admin | base64 QVFCSUgrbGQxb2tBSmhBQW1VTFZKTTR6Q0NWQUsvVmRpM1R6NVE9PQ==
k8s-master上创建ceph的secret
# 创建一个目录,存放yaml文件,自己可以随意设置 [root@k8s-master yum.repos.d]# mkdir /root/k8s/nmp/k1/ceph [root@k8s-master yum.repos.d]# cd /root/k8s/nmp/k1/ceph/ [root@k8s-master ceph]# pwd /root/k8s/nmp/k1/ceph # 创建secret [root@k8s-master ceph]# vim ceph-secret.yaml [root@k8s-master ceph]# cat ceph-secret.yaml apiVersion: v1 kind: Secret metadata: name: ceph-secret type: "kubernetes.io/rbd" data: key: QVFDTTlXOWFOMk9IR3hBQXZyUjFjdGJDSFpoZUtmckY0N2tZOUE9PQ== [root@k8s-master ceph]# kubectl create -f ceph-secret.yaml secret "ceph-secret" created [root@k8s-master ceph]# kubectl get secret NAME TYPE DATA AGE ceph-secret kubernetes.io/rbd 1 7s [root@k8s-master ceph]#
创建PV
[root@k8s-master ceph]# vim filecenter-pv.yaml apiVersion: v1 kind: PersistentVolume metadata: name: filecenter-pv spec: capacity: storage: 1Gi accessModes: - ReadWriteOnce rbd: monitors: - 172.16.143.121:6789 pool: rbd_data image: filecenter_image user: admin secretRef: name: ceph-secret fsType: xfs readOnly: false persistentVolumeReclaimPolicy: Recycle [root@k8s-master ceph]# kubectl create -f filecenter-pv.yaml persistentvolume "filecenter-pv" created [root@k8s-master ceph]# kubectl get pv -o wide NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM REASON AGE filecenter-pv 1Gi RWO Recycle Available 18m
创建PVC
[root@k8s-master ceph]# vim filecenter-pvc.yaml kind: PersistentVolumeClaim apiVersion: v1 metadata: name: filecenter-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi [root@k8s-master ceph]# kubectl create -f filecenter-pvc.yaml persistentvolumeclaim "filecenter-pvc" created [root@k8s-master ceph]# kubectl get pvc -o wide NAME STATUS VOLUME CAPACITY ACCESSMODES AGE filecenter-pvc Bound filecenter-pv 1Gi RWO 6s [root@k8s-master ceph]#
创建deployment挂载PVC
这里修改之前已经在使用的php-filecenter.yaml
[root@k8s-master ceph]# vim ../php/file-center/php-filecenter-deployment.yaml apiVersion: extensions/v1beta1 kind: Deployment metadata: name: php-filecenter-deployment spec: replicas: 1 selector: matchLabels: app: php-filecenter template: metadata: labels: app: php-filecenter spec: containers: - name: php-filecenter image: 172.16.143.107:5000/php-fpm:v2019120205 volumeMounts: - mountPath: "/mnt" name: filedata volumes: - name: filedata persistentVolumeClaim: claimName: filecenter-pvc [root@k8s-master ceph]# kubectl apply -f ../php/file-center/php-filecenter-deployment.yaml deployment "php-filecenter-deployment" configured [root@k8s-master ceph]#
报错:pvc没有创建成功,导致pod创建失败
# pvc并没有绑定成功,导致pod创建失败 [root@k8s-master ceph]# kubectl exec -it php-filecenter-deployment-3316474311-g1jmg bash Error from server (BadRequest): pod php-filecenter-deployment-3316474311-g1jmg does not have a host assigned [root@k8s-master ceph]# kubectl describe pod php-filecenter-deployment-3316474311-g1jmg Name: php-filecenter-deployment-3316474311-g1jmg Namespace: default Node: / Labels: app=php-filecenter pod-template-hash=3316474311 Status: Pending IP: Controllers: ReplicaSet/php-filecenter-deployment-3316474311 Containers: php-filecenter: Image: 172.16.143.107:5000/php-fpm:v2019120205 Port: Volume Mounts: /mnt from filedata (rw) Environment Variables: <none> Conditions: Type Status PodScheduled False Volumes: filedata: Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) ClaimName: filecenter-pvc ReadOnly: false QoS Class: BestEffort Tolerations: <none> Events: FirstSeen LastSeen Count From SubObjectPath Type Reason Message --------- -------- ----- ---- ------------- -------- ------ ------- 8m 1m 29 {default-scheduler } Warning FailedScheduling [SchedulerPredicates failed due to PersistentVolumeClaim is not bound: "filecenter-pvc", which is unexpected., SchedulerPredicates failed due to PersistentVolumeClaim is not bound: "filecenter-pvc", which is unexpected.] # 查看pv,pv是Available [root@k8s-master ceph]# kubectl get pv -o wide NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM REASON AGE filecenter-pv 1Gi RWO Recycle Available 39m # 查看pvc,发现pvc是pending状态,有问题 [root@k8s-master ceph]# kubectl get pvc -o wide NAME STATUS VOLUME CAPACITY ACCESSMODES AGE filecenter-pvc Pending 35m [root@k8s-master ceph]# kubectl get pod php-filecenter-deployment-3316474311-g1jmg NAME READY STATUS RESTARTS AGE php-filecenter-deployment-3316474311-g1jmg 0/1 Pending 0 9m [root@k8s-master ceph]# [root@k8s-master ceph]# kubectl describe pv filecenter-pv Name: filecenter-pv Labels: <none> StorageClass: Status: Available Claim: Reclaim Policy: Recycle Access Modes: RWO Capacity: 1Gi Message: Source: Type: RBD (a Rados Block Device mount on the host that shares a pod's lifetime) CephMonitors: [172.16.143.121:6789] RBDImage: filecenter_image FSType: xfs RBDPool: rbd_data RadosUser: admin Keyring: /etc/ceph/keyring SecretRef: &{ceph-secret} ReadOnly: false No events. [root@k8s-master ceph]# kubectl describe pvc filecenter-pvc Name: filecenter-pvc Namespace: default StorageClass: Status: Pending Volume: Labels: <none> Capacity: Access Modes: Events: FirstSeen LastSeen Count From SubObjectPath Type Reason Message --------- -------- ----- ---- ------------- -------- ------ ------- 48m 5s 196 {persistentvolume-controller } Normal FailedBinding no persistent volumes available for this claim and no storage class is set [root@k8s-master ceph]# # 这种问题就表示pv和pvc没有绑定成功,如果没有指定match labels等规则,那要么就是容量大小不匹配,要么就是access modes不匹配 # 这里检查,发现是pv定义的1G,而pvc定义的是10G,容量大小不匹配,所以pvc没有绑定成功。 # 修改pvc的配置 [root@k8s-master ceph]# vim filecenter-pvc.yaml # 再次重新应用配置 [root@k8s-master ceph]# kubectl apply -f filecenter-pvc.yaml The PersistentVolumeClaim "filecenter-pvc" is invalid: spec: Forbidden: field is immutable after creation # 删除pvc,重新创建 [root@k8s-master ceph]# kubectl delete -f filecenter-pvc.yaml persistentvolumeclaim "filecenter-pvc" deleted # 再次检查配置是否一致 [root@k8s-master ceph]# cat filecenter-pvc.yaml kind: PersistentVolumeClaim apiVersion: v1 metadata: name: filecenter-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi [root@k8s-master ceph]# cat filecenter-pv.yaml apiVersion: v1 kind: PersistentVolume metadata: name: filecenter-pv spec: capacity: storage: 1Gi accessModes: - ReadWriteOnce rbd: monitors: - 172.16.143.121:6789 pool: rbd_data image: filecenter_image user: admin secretRef: name: ceph-secret fsType: xfs readOnly: false persistentVolumeReclaimPolicy: Recycle # 重新创建pvc [root@k8s-master ceph]# kubectl create -f filecenter-pvc.yaml persistentvolumeclaim "filecenter-pvc" created [root@k8s-master ceph]# kubectl get pvc -o wide NAME STATUS VOLUME CAPACITY ACCESSMODES AGE filecenter-pvc Bound filecenter-pv 1Gi RWO 6s [root@k8s-master ceph]# # 可以看到pvc是Bound状态,绑定成功。
没有rbd map,导致pod绑定rbd失败
[root@k8s-master ceph]# kubectl apply -f ../php/file-center/php-filecenter-deployment.yaml service "php-filecenter-service" configured deployment "php-filecenter-deployment" configured [root@k8s-master ceph]# kubectl get pod php-filecenter-deployment-3316474311-g1jmg NAME READY STATUS RESTARTS AGE php-filecenter-deployment-3316474311-g1jmg 0/1 ContainerCreating 0 41m [root@k8s-master ceph]# kubectl logs -f php-filecenter-deployment-3316474311-g1jmg Error from server (BadRequest): container "php-filecenter" in pod "php-filecenter-deployment-3316474311-g1jmg" is waiting to start: ContainerCreating [root@k8s-master ceph]# kubectl describe pod php-filecenter-deployment-3316474311-g1jmg Name: php-filecenter-deployment-3316474311-g1jmg Namespace: default Node: k8s-node1/172.16.143.108 Start Time: Sat, 07 Dec 2019 18:52:30 +0800 Labels: app=php-filecenter pod-template-hash=3316474311 Status: Pending IP: Controllers: ReplicaSet/php-filecenter-deployment-3316474311 Containers: php-filecenter: Container ID: Image: 172.16.143.107:5000/php-fpm:v2019120205 Image ID: Port: State: Waiting Reason: ContainerCreating Ready: False Restart Count: 0 Volume Mounts: /mnt from filedata (rw) Environment Variables: <none> Conditions: Type Status Initialized True Ready False PodScheduled True Volumes: filedata: Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) ClaimName: filecenter-pvc ReadOnly: false QoS Class: BestEffort Tolerations: <none> Events: FirstSeen LastSeen Count From SubObjectPath Type Reason Message --------- -------- ----- ---- ------------- -------- ------ ------- 41m 4m 133 {default-scheduler } Warning FailedScheduling [SchedulerPredicates failed due to PersistentVolumeClaim is not bound: "filecenter-pvc", which is unexpected., SchedulerPredicates failed due to PersistentVolumeClaim is not bound: "filecenter-pvc", which is unexpected.] 3m 3m 1 {default-scheduler } Normal Scheduled Successfully assigned php-filecenter-deployment-3316474311-g1jmg to k8s-node1 1m 1m 1 {kubelet k8s-node1} Warning FailedMount Unable to mount volumes for pod "php-filecenter-deployment-3316474311-g1jmg_default(5d5d48d9-18da-11ea-8c36-000c29fc3a73)": timeout expired waiting for volumes to attach/mount for pod "default"/"php-filecenter-deployment-3316474311-g1jmg". list of unattached/unmounted volumes=[filedata] 1m 1m 1 {kubelet k8s-node1} Warning FailedSync Error syncing pod, skipping: timeout expired waiting for volumes to attach/mount for pod "default"/"php-filecenter-deployment-3316474311-g1jmg". list of unattached/unmounted volumes=[filedata] 1m 1m 1 {kubelet k8s-node1} Warning FailedMount MountVolume.SetUp failed for volume "kubernetes.io/rbd/5d5d48d9-18da-11ea-8c36-000c29fc3a73-filecenter-pv" (spec.Name: "filecenter-pv") pod "5d5d48d9-18da-11ea-8c36-000c29fc3a73" (UID: "5d5d48d9-18da-11ea-8c36-000c29fc3a73") with: rbd: map failed exit status 1 2019-12-07 18:54:44.268690 7f2f99d00d40 -1 did not load config file, using default settings. 2019-12-07 18:54:44.271606 7f2f99d00d40 -1 Errors while parsing config file! 2019-12-07 18:54:44.271610 7f2f99d00d40 -1 parse_file: cannot open /etc/ceph/ceph.conf: (2) No such file or directory 2019-12-07 18:54:44.271610 7f2f99d00d40 -1 parse_file: cannot open ~/.ceph/ceph.conf: (2) No such file or directory 2019-12-07 18:54:44.271610 7f2f99d00d40 -1 parse_file: cannot open ceph.conf: (2) No such file or directory 2019-12-07 18:54:44.272599 7f2f99d00d40 -1 Errors while parsing config file! 2019-12-07 18:54:44.272603 7f2f99d00d40 -1 parse_file: cannot open /etc/ceph/ceph.conf: (2) No such file or directory 2019-12-07 18:54:44.272603 7f2f99d00d40 -1 parse_file: cannot open ~/.ceph/ceph.conf: (2) No such file or directory 2019-12-07 18:54:44.272604 7f2f99d00d40 -1 parse_file: cannot open ceph.conf: (2) No such file or directory 2019-12-07 18:54:44.291155 7f2f99d00d40 -1 auth: unable to find a keyring on /etc/ceph/ceph.client.admin.keyring,/etc/ceph/ceph.keyring,/etc/ceph/keyring,/etc/ceph/keyring.bin,: (2) No such file or directory rbd: sysfs write failed 2019-12-07 18:54:44.297026 7f2f99d00d40 -1 auth: unable to find a keyring on /etc/ceph/ceph.client.admin.keyring,/etc/ceph/ceph.keyring,/etc/ceph/keyring,/etc/ceph/keyring.bin,: (2) No such file or directory 2019-12-07 18:54:44.298627 7f2f99d00d40 0 librados: client.admin authentication error (1) Operation not permitted rbd: couldn't connect to the cluster! In some cases useful info is found in syslog - try "dmesg | tail". rbd: map failed: (1) Operation not permitted # 上面说没有ceph.conf和ceph.client.admin.keyring,我们从ceph-admin节点拷贝过来 [root@k8s-master ceph]# rz [root@k8s-master ceph]# ls ceph.client.admin.keyring ceph.conf rbdmap # k8s所有节点都要拷贝,node节点也拷贝一下 [root@k8s-node1 ceph]# rz [root@k8s-node1 ceph]# ls ceph.client.admin.keyring ceph.conf rbdmap # 删除pod,让它重新挂载一下 [root@k8s-master ceph]# kubectl delete pod php-filecenter-deployment-3316474311-g1jmg pod "php-filecenter-deployment-3316474311-g1jmg" deleted [root@k8s-master ceph]# kubectl describe pod php-filecenter-deployment-3316474311-jr48g Name: php-filecenter-deployment-3316474311-jr48g Namespace: default Node: k8s-master/172.16.143.107 Start Time: Mon, 09 Dec 2019 10:01:29 +0800 Labels: app=php-filecenter pod-template-hash=3316474311 Status: Pending IP: Controllers: ReplicaSet/php-filecenter-deployment-3316474311 Containers: php-filecenter: Container ID: Image: 172.16.143.107:5000/php-fpm:v2019120205 Image ID: Port: State: Waiting Reason: ContainerCreating Ready: False Restart Count: 0 Volume Mounts: /mnt from filedata (rw) Environment Variables: <none> Conditions: Type Status Initialized True Ready False PodScheduled True Volumes: filedata: Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) ClaimName: filecenter-pvc ReadOnly: false QoS Class: BestEffort Tolerations: <none> Events: FirstSeen LastSeen Count From SubObjectPath Type Reason Message --------- -------- ----- ---- ------------- -------- ------ ------- 10s 10s 1 {default-scheduler } Normal Scheduled Successfully assigned php-filecenter-deployment-3316474311-jr48g to k8s-master 8s 8s 1 {kubelet k8s-master} Warning FailedMount MountVolume.SetUp failed for volume "kubernetes.io/rbd/d05aa080-1a27-11ea-8c36-000c29fc3a73-filecenter-pv" (spec.Name: "filecenter-pv") pod "d05aa080-1a27-11ea-8c36-000c29fc3a73" (UID: "d05aa080-1a27-11ea-8c36-000c29fc3a73") with: rbd: map failed exit status 1 rbd: sysfs write failed 2019-12-09 10:01:30.443054 7f96b803fd40 0 librados: client.admin authentication error (1) Operation not permitted rbd: couldn't connect to the cluster! In some cases useful info is found in syslog - try "dmesg | tail". rbd: map failed: (1) Operation not permitted 6s 6s 1 {kubelet k8s-master} Warning FailedMount MountVolume.SetUp failed for volume "kubernetes.io/rbd/d05aa080-1a27-11ea-8c36-000c29fc3a73-filecenter-pv" (spec.Name: "filecenter-pv") pod "d05aa080-1a27-11ea-8c36-000c29fc3a73" (UID: "d05aa080-1a27-11ea-8c36-000c29fc3a73") with: rbd: map failed exit status 1 rbd: sysfs write failed 2019-12-09 10:01:32.022514 7fb376cb0d40 0 librados: client.admin authentication error (1) Operation not permitted rbd: couldn't connect to the cluster! In some cases useful info is found in syslog - try "dmesg | tail". rbd: map failed: (1) Operation not permitted 4s 4s 1 {kubelet k8s-master} Warning FailedMount MountVolume.SetUp failed for volume "kubernetes.io/rbd/d05aa080-1a27-11ea-8c36-000c29fc3a73-filecenter-pv" (spec.Name: "filecenter-pv") pod "d05aa080-1a27-11ea-8c36-000c29fc3a73" (UID: "d05aa080-1a27-11ea-8c36-000c29fc3a73") with: rbd: map failed exit status 1 rbd: sysfs write failed 2019-12-09 10:01:34.197942 7f0282d5fd40 0 librados: client.admin authentication error (1) Operation not permitted rbd: couldn't connect to the cluster! In some cases useful info is found in syslog - try "dmesg | tail". rbd: map failed: (1) Operation not permitted 1s 1s 1 {kubelet k8s-master} Warning FailedMount MountVolume.SetUp failed for volume "kubernetes.io/rbd/d05aa080-1a27-11ea-8c36-000c29fc3a73-filecenter-pv" (spec.Name: "filecenter-pv") pod "d05aa080-1a27-11ea-8c36-000c29fc3a73" (UID: "d05aa080-1a27-11ea-8c36-000c29fc3a73") with: rbd: map failed exit status 1 rbd: sysfs write failed 2019-12-09 10:01:37.602709 7f18facc1d40 0 librados: client.admin authentication error (1) Operation not permitted rbd: couldn't connect to the cluster! In some cases useful info is found in syslog - try "dmesg | tail". rbd: map failed: (1) Operation not permitted [root@k8s-master ceph]#