Я пытаюсь использовать 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 в контейнер, но он все равно не работает.
Я что-то упустил?
Попробуйте следующие настройки SELinux
setsebool -P virt_use_fusefs 1
setsebool -P virt_sandbox_use_fusefs 1
У меня была та же ошибка, и я смог заставить ее работать, изменив стратегию политики ограничения scc по умолчанию. Поскольку вы запускаете образ openshift mysql, который запускается от имени конкретного пользователя (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 в качестве примера, но это позволит образу mysql openshift запускать его пользователем 27