gpt4 book ai didi

kubernetes - 如何在Pod中定义已安装卷的uid,gid

转载 作者:行者123 更新时间:2023-12-02 12:26:57 28 4
gpt4 key购买 nike

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

我们使用“Persistent Volume”和“Persistent Volume Claim”来表示真实的后端存储服务器。当前,真正的后备存储服务器是“NFS”。但是“NFS”不受我们控制,因此我们无法更改NFS配置。

每次,将卷的uid和gid装入Pod始终是“root root”。但是Pod中的进程以非root用户身份运行,该进程无法读取/写入已安装的卷。
我们当前的解决方案是定义一个initContainer,它以root身份运行,并使用命令'chown [udi] [gid] [folder]'更改所有权。 ininContainer必须以root用户运行有一个限制。

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

所以我的问题是使用k8s方式或Openshift方式来定义/更改已安装卷的uid和gid。
我已经尝试过Kubernetes Persistent Volume Claim mounted with wrong gid中提到的mountOptionsmountOptions: #these options
- uid=1000
- gid=1000

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

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

最佳答案

如果我们谈论Kubernetes,您可以设置拥有卷的组ID,这可以通过使用Pod Security Context的功能fsGroup来完成。

至于还是OpenShift我不知道。

apiVersion: v1
kind: Pod
metadata:
name: hello-world
spec:
containers:
# specification of the pod's containers
# ...
securityContext:
fsGroup: 1000

The security context for a Pod applies to the Pod's Containers and also to the Pod's Volumes when applicable. Specifically fsGroup and seLinuxOptions are applied to Volumes as follows:

  • fsGroup: Volumes that support ownership management are modified to be owned and writable by the GID specified in fsGroup. See the Ownership Management design document for more details.


您还可以阅读有关 here的更多信息,并按照 @rajdeepbs29发布的步骤 here进行操作。

关于kubernetes - 如何在Pod中定义已安装卷的uid,gid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62369296/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com