Skip to main content

Mount Pod 使用定制的 /etc/passwd 和 /etc/group

企业版用户如果启用了 UID / GID 自动映射功能,那么在宿主机和容器中同时挂载时,由于两者的 /etc/passwd/etc/group 往往不一致,容易碰到 UID / GID 不一致 的情况。

此时需要为 Mount Pod 配置与宿主机相同的定制的 /etc/passwd/etc/group 文件来保证 UID / GID 一致。

根据宿主机配置创建 Secret

以下命令会读取宿主机的 /etc/passwd/etc/group 来生成 Mount Pod 使用的 Kubernetes Secret。

$ kubectl create secret generic juicefs-uid-gid --from-file=passwd=/etc/passwd --from-file=group=/etc/group 
$ kubectl describe secret juicefs-uid-gid
Name: juicefs-uid-gid
Namespace: default
Labels: <none>
Annotations: <none>

Type: Opaque

Data
====
group: 882 bytes
passwd: 1898 byte

配置 Mount Pod

Mount Pod 的镜像中已经默认将 /etc/passwd/etc/group 变为指向 ~/.acl/passwd~/.acl/group 的软链接。如下:

$ ls -l /etc/ | grep acl
lrwxrwxrwx 1 root root 16 Aug 27 04:49 group -> /root/.acl/group
lrwxrwxrwx 1 root root 17 Aug 27 04:49 passwd -> /root/.acl/passwd

只需要将上一步创建出来的 Secret 挂载到 /root/.acl 即可,参考如何额外添加文件增加对应字段 configs: "{juicefs-uid-gid: /root/.acl}"