And*_*nca 5 openstack kubernetes persistent-volumes
我管理 Openstack 上的 Kubernetes 部署。
我的用户 Pod 挂载PersistentVolume使用 Openstack Cinder 动态创建的文件夹作为其主文件夹。
奇怪的是,如果我创建一个文件权限为 600 的(空)文件:
bash-4.2$ ls -l
total 16
-rw------- 1 jovyan users 0 Jul 16 17:55 id_rsa
Run Code Online (Sandbox Code Playgroud)
然后我终止容器并重新启动它,卷再次安装,但权限现在具有rw组权限:
bash-4.2$ ls -l
total 16
-rw-rw---- 1 jovyan users 0 Jul 16 17:55 id_rsa
Run Code Online (Sandbox Code Playgroud)
关于如何进一步调试这个问题有什么建议吗?
AccessMode为ReadWriteOnce,volumeMode: Filesystemext4:/dev/sdf: Linux rev 1.0 ext4 filesystem data, UUID=c627887b-0ff0-4310-b91d-37fe5ca9564d (needs journal recovery) (extents) (64bit) (large files) (huge files)我首先认为这是 Openstack 问题,但如果我从 Openstack 实例中分离该卷,然后使用 Openstack 命令再次附加它,并使用节点上的终端安装它,权限就可以了。所以我认为 Kubernetes 以某种方式搞乱了权限。
我将 pod、PV 和 PVC 的 YAML 文件粘贴到要点上,请参阅https://gist.github.com/zonca/21b81f735d0cc9a06cb85ae0fa0285e5
kubectl describe我还添加了这些资源的输出。它是 0.9.0 Helm 包的部署Jupyterhub。
发生这种情况是因为您已使用fsGroup. 它在以下指定securityContext:
---
securityContext:
fsGroup: 100
---
Run Code Online (Sandbox Code Playgroud)
每当fsGroup指定字段时,容器的所有进程也是补充组 ID 的一部分。卷以及在该卷中创建的任何文件的所有者将是组 ID。
kubernetes API 文档是这样解释的:
fsGroup是一个特殊的补充组,适用于 pod 中的所有容器。某些卷类型允许 Kubelet 将该卷的所有权更改为 pod 所拥有:
- 所属 GID 将是 FSGroup
- setgid 位已设置(卷中创建的新文件将归 FSGroup 所有)
- 权限位与 rw-rw 进行或运算----如果未设置,Kubelet 将不会修改任何卷的所有权和权限。
| 归档时间: |
|
| 查看次数: |
11605 次 |
| 最近记录: |