хорошо, я бьюсь головой об стену уже несколько дней ...
мой вариант использования: я нахожусь в собственном облаке с голым железом, я запускаю машины ubuntu и настраиваю кубернеты на 4 машинах, один мастер 3 рабочих. Я создал частный реестр и сертификат-менеджер и т. Д. И т. Д.
также общие ресурсы nfs находятся на рабочих узлах
У меня есть программное обеспечение, которое должно запускаться от имени пользователя root внутри модуля. Теперь я хочу, чтобы этот пользователь root сохранял данные на постоянном томе в общей папке nfs.
root_squash кусает меня в но ...
Я создал тома и претензии, и все работает нормально, если я не являюсь пользователем root внутри модуля. когда root файлы на общих ресурсах nfs не передаются никому: nogroup и пользователь root внутри модуля больше не может их использовать ...
что делать?
1) экспортировать общий ресурс nfs с параметром no_root_squash, но это кажется очень плохой идеей, учитывая проблемы с безопасностью, не уверен, что это можно смягчить только правилами брандмауэра?
2) Я использую все виды параметров securityContext для параметров монтирования fsGroup и uid en gid, все работает нормально, пока вы не являетесь пользователем root в de pod ... но я не уверен, что понимаю это полностью, поэтому
Мой компьютер yaml:
apiVersion: v1
kind: PersistentVolume
metadata:
name: s03-pv0004
annotations:
pv.beta.kubernetes.io/gid: "1023"
spec:
capacity:
storage: 10Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: slow
mountOptions:
- hard
- nfsvers=4.1
nfs:
path: /data/k8s/pv0004
server: 212.114.120.61
Как вы видите, я создал специальный nfsuser с uid 1023 и использовал его, чтобы поды сохраняли данные от имени этого пользователя ... отлично работает, пока я не рутирован внутри подов ...
Я запускаю модули MarkLogic в наборе с отслеживанием состояния, например:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: marklogic
namespace: default
spec:
selector:
matchLabels:
app: marklogic
serviceName: "ml-service"
replicas: 3
template:
metadata:
labels:
app: marklogic
spec:
securityContext:
fsGroup: 1023
... more
runAsUser: 1023 работает, но опять же, если я хочу быть root внутри модуля ...
Мой вопрос: можно ли это сделать, запустить под от имени root и по-прежнему использовать nfs в качестве постоянного тома с безопасным общим ресурсом nfs (который не использует no_root_squash) ???
или мне нужно отказаться от идеи nfs и перейти к альтернативе, такой как glusterfs?