1

我想通过使用基于此官方文档的 PVC 和 PV 在 GKE 中使用 FileStore:https ://cloud.google.com/filestore/docs/accessing-fileshares

我的应用程序没有以 root 身份运行,所以我想设置使用哪个 GID/UID 将卷挂载到容器中。

我通过使用 InitContainer 或单独的 NFS 中间件了解一些替代方案,但希望避免另一个移动部分。

4

1 回答 1

1

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

让我知道它很有用。

于 2020-03-16T17:12:56.383 回答