首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何定义Pod中已安装卷的uid,gid

如何定义Pod中已安装卷的uid,gid
EN

Stack Overflow用户
提问于 2020-06-14 06:48:16
回答 1查看 5.7K关注 0票数 1

这是我们生产环境中的一个问题。我们使用Kubernetes通过Pods部署应用程序。Pods可能需要一些存储来存储文件。

我们使用“持久卷”和“持久卷声明”来表示真正的后端存储服务器。目前,真正的备份存储服务器是'NFS‘。但是“NFS”不是由我们控制的,我们不能更改NFS配置。

每次,卷装入Pod的uid和gid总是“根根”。但是Pod中的进程是以非根用户的身份运行的,进程无法读取/写入已安装的卷。我们当前的解决方案是定义一个以根用户运行的initContainer,并使用命令'chown udi文件夹‘来更改所有权。有一个限制,即ininContainer必须以根用户的身份运行。

目前,我们正在尝试在Openshift上部署应用程序。默认情况下,所有的Pods(容器)都不能作为root运行。否则,Pod将无法创建。

因此,我的问题是使用k8s方式或Openshift方式定义/更改已挂载卷的uid和gid。我试过了mountOptions,在Kubernetes持久化卷索赔装入错误的gid里提到过

mountOptions: #these options - uid=1000 - gid=1000

但以下错误消息失败。似乎NFS服务器不支持uid和gid参数。

代码语言:javascript
复制
Warning  FailedMount  11s  kubelet, [xxxxx.net]  MountVolume.SetUp failed for volume "nfs-gid-pv" : mount failed: exit status 32 Mounting command: systemd-run
Mounting arguments: --description=Kubernetes transient mount for /opt/kubernetes/data/kubelet/pods/3c75930a-d3f7-4d55-9996-4d10dcac9549/volumes/kubernetes.io~nfs/nfs-gid-pv --scope -- mount -t nfs -o gid=1999,uid=1999 shc-sma-cd74.hpeswlab.net:/var/vols/itom/itsma/tzhong /opt/kubernetes/data/kubelet/pods/3c75930a-d3f7-4d55-9996-4d10dcac9549/volumes/kubernetes.io~nfs/nfs-gid-pv
Output: Running scope as unit run-22636.scope.
mount.nfs: an incorrect mount option was specified
  Warning  FailedMount  7s  kubelet, [xxxxx.net]  MountVolume.SetUp failed for volume "nfs-gid-pv" : mount failed: exit status 32
Mounting command: systemd-run
Mounting arguments: --description=Kubernetes transient mount for /opt/kubernetes/data/kubelet/pods/3c75930a-d3f7-4d55-9996-4d10dcac9549/volumes/kubernetes.io~nfs/nfs-gid-pv --scope -- mount -t nfs -o gid=1999,uid=1999 shc-sma-cd74.hpeswlab.net:/var/vols/itom/itsma/tzhong /opt/kubernetes/data/kubelet/pods/3c75930a-d3f7-4d55-9996-4d10dcac9549/volumes/kubernetes.io~nfs/nfs-gid-pv
Output: Running scope as unit run-22868.scope.
mount.nfs: an incorrect mount option was specified
EN

回答 1

Stack Overflow用户

发布于 2020-06-15 12:51:08

如果我们谈到Kubernetes,您可以设置组ID,它拥有可以通过使用fsGroup (来自Pod安全上下文的一个特性)完成的卷。

作为或OpenShift,我不知道。

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  name: hello-world
spec:
  containers:
  # specification of the pod's containers
  # ...
  securityContext:
    fsGroup: 1000

Pod的安全上下文适用于Pod的容器,也适用于Pod的卷。具体来说,fsGroupseLinuxOptions适用于卷,如下所示:

  • fsGroup:支持所有权管理的卷被修改为由fsGroup中指定的GID拥有和可写。有关更多细节,请参见所有权管理设计文件

您还可以阅读更多关于它的这里,并遵循@raj深处29发布的这里发布的步骤。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62369296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档