Permissão negada com Openshift PersistentStorage no GlusterFS

1

Estou tentando usar o OpenShift com o PersistentStorage em um cluster GusterFS.

Estou começando um dos modelos padrão: mysql-persistent

Eu instalei um cluster GlusterFS e criei um volume gv_mysql_01

Eu adicionei os endpoints do glusterfs no openshift:

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

Eu criei o PersistentVolume no openshift:

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

O PersistentStorage é vinculado ao contêiner:

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

No host do cluster, o volume é montado:

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)

mas nos registros do contêiner:

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

Eu tentei alterar o proprietário, o grupo e os direitos de /var/lib/origin/openshift.local.volumes/pods/c111c480-8ec7-11e5-8405-0a57f8bdd6b3/volumes/kubernetes.io~glusterfs/mysql com o uid: gid do usuário mysql no container, mas ainda não funciona.

Estou sentindo falta de algo?

    
por mick 19.11.2015 / 15:41

2 respostas

1

Experimente estas configurações do SELinux

setsebool -P virt_use_fusefs 1
setsebool -P virt_sandbox_use_fusefs 1
    
por 20.11.2015 / 21:44
1

Eu estava com o mesmo erro e consegui fazê-lo funcionar alterando a estratégia de política restrita do scc padrão. Como você está executando a imagem mysql openshift que é executada como um usuário específico (27), é necessário alterar o scc restrito para permitir que o ID seja executado

[root@ose1 ceph]# oc edit scc restricted

edite o arquivo (com vi) e altere o valor de fsGroup de RunAsAny para MustRunAs

    fsGroup:
        type: MustRunAs

Você pode ver isso:

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

Você também precisa alterar o intervalo de UID padrão no namespace que está usando:

[root@ose1 ceph]# oc edit ns default  (sub your namespace for 'default')

openshift.io/sa.scc.uid-range: 25/10000

Eu fiz o começo em 25 como um exemplo, mas isso permitirá que a imagem do mysql openshift execute o usuário de 27

    
por 20.11.2015 / 22:54