我想通过使用基于此官方文档的 PVC 和 PV 在 GKE 中使用 FileStore:https ://cloud.google.com/filestore/docs/accessing-fileshares
我的应用程序没有以 root 身份运行,所以我想设置使用哪个 GID/UID 将卷挂载到容器中。
我通过使用 InitContainer 或单独的 NFS 中间件了解一些替代方案,但希望避免另一个移动部分。
我想通过使用基于此官方文档的 PVC 和 PV 在 GKE 中使用 FileStore:https ://cloud.google.com/filestore/docs/accessing-fileshares
我的应用程序没有以 root 身份运行,所以我想设置使用哪个 GID/UID 将卷挂载到容器中。
我通过使用 InitContainer 或单独的 NFS 中间件了解一些替代方案,但希望避免另一个移动部分。
Kuberentes 目前不提供使用 pod 规范设置卷挂载权限/所有者的功能。所有字段及其描述都可以在kubernetes api 参考中找到。
您可以在 Internet 上找到最常用的方法是使用 initContiners。真的不存在任何其他更好的方法来做到这一点。
您还提到您希望避免在每次部署中执行 chown。您可以像以下示例一样在 bash 中使用 if 语句来避免它,以便仅在必要时执行 chown:
---
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
volumes:
- name: my-pv-storage
persistentVolumeClaim:
claimName: my-pv-claim
initContainers:
- name: init-myservice
image: busybox:1.28
command: ['sh', '-c', 'OWNER=`stat -c "%U:%G" /mnt/data` && if [ $OWNER == "root:root" ]; then chown -R 1000:3000 /mnt/data; fi']
volumeMounts:
- mountPath: "/mnt/data"
name: my-pv-storage
containers:
- name: my-pv-container
image: my-image
volumeMounts:
- mountPath: "/mnt/data"
name: my-pv-storage
securityContext:
runAsUser: 1000
runAsGroup: 3000
让我知道它很有用。