【问题标题】:kubernetes use nfs persistent volumes with a root user in a podkubernetes 在 pod 中使用具有 root 用户的 nfs 持久卷
【发布时间】:2018-11-23 19:14:38
【问题描述】:

好吧,我现在正在用头撞墙好几天......

我的用例: 我在自己的裸机云上,我正在运行 ubuntu 机器并在 4 台机器上设置 kubernetes,一台主机 3 台工人。我创建了一个私有注册表和证书管理器等。

nfs 共享也在工作节点上

我有一个软件必须在 pod 中以 root 身份运行现在我希望这个 root 用户将数据存储在 nfs 共享上的持久卷上。

root_squash 咬我但是...

我已经创建了卷和声明,如果我不是 pod 内的根,则一切正常。当 root 时,nfs 共享上的文件被压缩到nobody:nogroup 并且 pod 内的 root 用户不能再使用它们...

怎么办?

1) 使用 no_root_squash 选项导出 nfs 共享,但考虑到安全问题,这似乎是一个非常糟糕的主意,不确定仅通过防火墙规则是否可以缓解这种情况?

2) 我为 fsGroup 和 uid en gid 挂载选项尝试了各种 securityContext 选项,只要你不是 de pod 的 root,一切都可以正常工作......但我不确定我是否完全理解这一点所以

我的电脑 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

如您所见,我创建了一个具有 uid 1023 的专用 nfsuser 并使用它来使 pod 以该用户身份存储数据...只要我不在 pod 内就可以正常工作...

我正在运行的 pod 是有状态集合中的 MarkLogic pod,如下所示:

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 有效,但如果我想成为 pod 内的 root,则再次无效...

我的问题:可以做到吗,以 root 身份运行 pod 并仍然使用 nfs 作为具有安全 nfs 共享的持久卷(即不使用 no_root_squash)???

还是我需要放弃 nfs 的想法并转向像 glusterfs 这样的替代方案?

【问题讨论】:

标签: kubernetes root nfs persistent-volumes


【解决方案1】:

我会尝试用非常简单的步骤来回答:

1.你甚至可以让 root_squash 为 k8s 工作:

- run your containers as non root user: 1023 in your case

- chown -R 1023:1023 <nfs dir>

2。你可以让 no_root_squash 为 k8s 工作:

- run your containers as root user: 0 

- chown -R root:root <nfs dir>

【讨论】:

  • 太棒了!它的作品。
【解决方案2】:

我已从 nfs 存储转移到 kubernetes 中的本地存储声明选项。可以对此进行注释,以便每次重新创建需要 PV 的 Pod 都位于同一个节点上......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-30
    • 2018-05-13
    • 2017-09-03
    • 2017-03-24
    • 1970-01-01
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多