问题描述
有没有办法在 Kubernetes 中以声明方式设置每个卷的权限/所有权?
Is there any way to set per-volume permissions/ownership in Kubernetes declaratively?
用例:
- 一个 pod 由两个容器组成,作为两个不同的用户/组运行,他们都是非 root 用户,并且无法
sudo
- 每个容器都挂载一个卷,并且需要在这些卷中创建文件(例如,它们都想写入日志)
我们知道我们可以使用 fsGroup
,但这是一个 pod 级别的声明.所以即使我们在第一个容器中选择 fsGroup 等于用户,那么我们也会在另一个容器中遇到权限问题.(参考:Kubernetes:如何设置 VolumeMount 用户组和文件权限)
We know that we can use fsGroup
, however that is a pod-level declaration. So even if we pick fsGroup equal to user in first container, then we are going to have permission issues in the other one. (ref: Kubernetes: how to set VolumeMount user group and file permissions)
推荐答案
一种解决方案是使用 init-container 来改变挂载目录的权限.
init-container 需要挂载两个卷(从两个容器),并执行所需的 chown
/chmod
操作.
The init-container would need to mount both volumes (from both containers), and do the needed chown
/chmod
operations.
缺点:
- 需要了解其他容器特定(即 uid/gid)的额外容器
- init 容器需要以 root 身份运行才能执行
chown
这篇关于Kubernetes - 为每个卷(而不是每个 pod)设置自定义权限/文件所有权的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!