kubernetes использует постоянные тома nfs с пользователем root в модуле - PullRequest
0 голосов
/ 23 ноября 2018

хорошо, сейчас я бьюсь головой об стену в течение нескольких дней ...

мой сценарий использования: я нахожусь в своем собственном облаке, работаю на ubuntu и настраиваю kubernetes на 4 машинах, один мастер3 рабочих.Я создал личный реестр и сертификат-менеджер и т. Д. И т. Д.

также общие ресурсы nfs находятся на рабочих узлах

У меня есть часть программного обеспечения, которую должен запускать от имени root внутри модуля. Теперь я хочу, чтобы этот пользователь root сохранил данные на постоянном томе в общей папке nfs.

root_squash кусает меня, но ...

Я создал тома и утверждения ивсе работает нормально, если я не root внутри стручка.когда root файлы в общих ресурсах nfs никому не нужны: nogroup и пользователь root внутри модуля больше не могут их использовать ...

что делать?

1) экспортировать ресурс nfsс параметром no_root_squash, но это кажется очень плохой идеей, учитывая проблемы с безопасностью, не уверен, что это можно исправить только с помощью правил брандмауэра?

2) я использовал все виды параметров securityContext для fsGroup и uid en gid mountпараметры, все работают нормально, пока вы не являетесь пользователем root в de pod ... но я не уверен, полностью ли я это понимаю, так что

My pc 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

Asвы видите, что я создал выделенный nfsuser с uid 1023 и использовал его, чтобы заставить стручки хранить данные, поскольку этот пользователь ... работает нормально, пока я не root в стручках ...

pods iя запускаю стручки 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?

1 Ответ

0 голосов
/ 30 ноября 2018

Я перешел из хранилища nfs в локальное хранилище в kubernetes.Это может быть аннотировано, поэтому модуль, которому нужен PV, приземляется на один и тот же узел каждый раз, когда он воссоздается ...

...