Назад | Перейти на главную страницу

В доступе отказано с Openshift PersistentStorage на GlusterFS

Я пытаюсь использовать OpenShift с PersistentStorage в кластере GusterFS.

Я запускаю один из шаблонов по умолчанию: mysql-persistent

Я установил кластер GlusterFS и создал том gv_mysql_01

Я добавил конечные точки glusterfs в openshift:

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

Я создал PersistentVolume на 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

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

Я пытался изменить владельца, группу, права /var/lib/origin/openshift.local.volumes/pods/c111c480-8ec7-11e5-8405-0a57f8bdd6b3/volumes/kubernetes.io~glusterfs/mysql с помощью uid: gid пользователя mysql в контейнере, но он по-прежнему не работает.

Я что-то упускаю ?

У меня была такая же ошибка, и я смог заставить ее работать, изменив стратегию ограниченной политики scc по умолчанию. Поскольку вы запускаете образ mysql openshift, который запускается от имени конкретного пользователя (27), вам необходимо изменить ограниченный scc, чтобы разрешить запуск идентификатора

[root@ose1 ceph]# oc edit scc restricted

затем отредактируйте файл (с помощью vi) и измените значение fsGroup с RunAsAny к MustRunAs

    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

Попробуйте эти настройки SELinux

setsebool -P virt_use_fusefs 1
setsebool -P virt_sandbox_use_fusefs 1