这是我们生产环境中的一个问题。我们使用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参数。
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发布于 2020-06-15 12:51:08
如果我们谈到Kubernetes,您可以设置组ID,它拥有可以通过使用fsGroup (来自Pod安全上下文的一个特性)完成的卷。
作为或OpenShift,我不知道。
apiVersion: v1
kind: Pod
metadata:
name: hello-world
spec:
containers:
# specification of the pod's containers
# ...
securityContext:
fsGroup: 1000Pod的安全上下文适用于Pod的容器,也适用于Pod的卷。具体来说,
fsGroup和seLinuxOptions适用于卷,如下所示:
fsGroup:支持所有权管理的卷被修改为由fsGroup中指定的GID拥有和可写。有关更多细节,请参见所有权管理设计文件。https://stackoverflow.com/questions/62369296
复制相似问题