Я пытаюсь использовать 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