【问题标题】:how to mount volumes as non-root on kubernetes如何在 kubernetes 上以非 root 身份挂载卷
【发布时间】:2020-12-10 12:51:38
【问题描述】:

我正在尝试创建一个运行 zookeper 的 statefulset,但我希望它以非 root 身份运行(即在 zookeper 用户下)。
这是用于此目的的图像:

https://github.com/kubernetes-retired/contrib/blob/master/statefulsets/zookeeper/Dockerfile

这就是我尝试挂载卷的方式(显然我需要一个根据this 的初始化容器):

      initContainers:
      # Changes username for volumes
      - name: changes-username
        image: busybox
        command:
        - /bin/sh
        - -c
        - |
          chown -R 1000:1000 /var/lib/zookeeper /etc/zookeeper-conf # <<<<--- this returns
          # cannot change ownership, permission denied
          # read-only filesystem.

      containers:
      - name: zookeeper
        imagePullPolicy: IfNotPresent
        image: my-repo/k8szk:3.4.14
        command:
        - sh
        - -c
        - |
          zkGenConfig.sh # The script right here requires /var/lib/zookeper to be owned by zookeper user.
                         # Initially zookeeper user does own it as per the dockerfile above,
                         # but when mounting the volume, the directory becomes owned by root
                         # hence the script fails.
        volumeMounts:
        - name: zk-data
          mountPath: /var/lib/zookeeper
        - name: zk-log4j-config
          mountPath: /etc/zookeeper-conf

我还尝试添加securityContext:fsGroup: 1000,没有任何变化。

【问题讨论】:

    标签: docker kubernetes apache-zookeeper


    【解决方案1】:

    这可以使用security context 进行配置,例如

    securityContext:
      runAsUser: 1000
      runAsGroup: 1000
      fsGroup: 1000
    

    那么您根本不需要 initContainer - Kubernetes 将处理递归 chown 作为卷准备就绪的一部分。

    这里的一个问题是 Dockerfile 链接不包含 USER 语句,因此 Kubernetes 不知道以正确的用户身份启动 pod - runAsUser 将解决这个问题。

    您尝试的initContainer hack 不起作用的原因是您还尝试更改只读配置目录的所有权。 ConfigMap 以只读方式挂载,您不能对其进行 chown。 (这曾经是不同的,但出于安全原因进行了更改)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-19
      • 2021-12-03
      • 2019-01-29
      • 2020-02-20
      • 2015-07-15
      • 2016-04-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多