GlusterFS上的Openshift PersistentStorage拒绝了权限

我试图在GustFS集群上使用OpenShift和PersistentStorage。

我正在启动一个默认的模板:mysql-persistent

我已经安装了一个GlusterFS集群并创build一个卷gv_mysql_01

我在openshift中添加了glusterfs端点:

oc get endpoints NAME ENDPOINTS AGE glusterfs-cluster 10.100.134.26:24007,10.100.134.28:24007 1h 

我已经在openshift上创build了PersistentVolume:

 cat gluster-mysql_01-storage.yaml apiVersion: "v1" kind: "PersistentVolume" metadata: name: "mysql" spec: capacity: storage: "512Mi" accessModes: - "ReadWriteOnce" glusterfs: endpoints: "glusterfs-cluster" path: "gv_mysql_01" readOnly: false persistentVolumeReclaimPolicy: "Recycle" oc create -f gluster-mysql_01-storage.yaml 

PersistentStorage绑定到容器:

 oc get pv NAME LABELS CAPACITY ACCESSMODES STATUS CLAIM REASON AGE mysql <none> 512Mi RWO Bound test/mysql 53m oc get pvc NAME LABELS STATUS VOLUME CAPACITY ACCESSMODES AGE mysql template=mysql-persistent-template Bound mysql 512Mi RWO 1h 

在群集主机上挂载卷:

 10.100.134.26:gv_mysql_01 on /var/lib/origin/openshift.local.volumes/pods/c111c480-8ec7-11e5-8405-0a57f8bdd6b3/volumes/kubernetes.io~glusterfs/mysql type fuse.glusterfs (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072) 

但在容器日志中:

 docker logs b8cd5bb3b0be Running mysql_install_db ... mkdir: cannot create directory '/var/lib/mysql/data': Permission denied chmod: cannot access '/var/lib/mysql/data/mysql': Permission denied mkdir: cannot create directory '/var/lib/mysql/data': Permission denied chmod: cannot access '/var/lib/mysql/data/test': Permission denied 151119 14:30:20 [Warning] Can't create test file /var/lib/mysql/data/mysql-1-q2yxh.lower-test 151119 14:30:20 [Warning] Can't create test file /var/lib/mysql/data/mysql-1-q2yxh.lower-test /opt/rh/mysql55/root/usr/libexec/mysqld: Can't change dir to '/var/lib/mysql/data/' (Errcode: 13) 151119 14:30:20 [ERROR] Aborting 

我试图用uid更改/var/lib/origin/openshift.local.volumes/pods/c111c480-8ec7-11e5-8405-0a57f8bdd6b3/volumes/kubernetes.io~glusterfs/mysql的所有者,组,权限:容器中的mysql用户的gid,但它仍然不起作用。

我错过了什么吗?

试试这些SELinux设置

 setsebool -P virt_use_fusefs 1 setsebool -P virt_sandbox_use_fusefs 1 

我遇到了同样的错误,通过更改默认的scc限制策略策略,我能够正常工作。 由于您正在运行作为特定用户(27)运行的openshift mysql映像,因此您需要更改受限制的scc以允许该id运行

 [root@ose1 ceph]# oc edit scc restricted 

然后编辑文件(使用vi)并将fsGroup值从RunAsAnyMustRunAs

  fsGroup: type: MustRunAs 

你可以看到这个:

 [root@ose1 ceph]# oc get scc restricted NAME PRIV CAPS HOSTDIR SELINUX RUNASUSER FSGROUP SUPGROUP PRIORITY restricted false [] false MustRunAs MustRunAsRange MustRunAs RunAsAny <none> 

您还需要更改正在使用的名称空间中的默认UID范围:

 [root@ose1 ceph]# oc edit ns default (sub your namespace for 'default') openshift.io/sa.scc.uid-range: 25/10000 

作为一个例子,我以25开头,但是这将允许openshift mysql镜像运行它的用户27