我正在使用 WSL2 Debian 和 Docker Desktop,我想将我的卷数据保存在本地文件夹中(最好是 OneDrive 的路径)。
这工作正常,但有一个例外,一切都归 root:root
所有。如何在卷中指定 user/group
权限?
是否有任何相关文档?
apiVersion: apps/v1
kind: Deployment
metadata:
name: dummy-service
labels:
app: dummy-service
spec:
replicas: 3
selector:
matchLabels:
app: dummy-service
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
template:
metadata:
labels:
app: dummy-service
spec:
containers:
- name: dotnet
image: alpine
imagePullPolicy: Always
resources:
requests:
cpu: "100m"
memory: "40Mi"
limits:
memory: "64Mi"
ports:
- containerPort: 5000
volumeMounts:
- mountPath: "/app/wwwroot"
name: dummy-volume
readinessProbe:
httpGet:
path: /heartbeat
port: 5000
scheme: HTTP
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 15
livenessProbe:
httpGet:
path: /heartbeat
port: 5000
scheme: HTTP
failureThreshold: 3
initialDelaySeconds: 10
periodSeconds: 15
successThreshold: 1
timeoutSeconds: 1
volumes:
- name: dummy-volume
persistentVolumeClaim:
claimName: dummy-pvc
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: dummy-sc
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: dummy-pv
spec:
capacity:
storage: 512Mi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: dummy-sc
local:
path: /run/desktop/mnt/host/c/Users/Markus/OneDrive/Workspace/Volume/Web
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- docker-desktop
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: dummy-pvc
spec:
storageClassName: dummy-sc
accessModes:
- ReadWriteMany
resources:
requests:
storage: 512Mi
答案 0 :(得分:0)
对于这个问题,我可以想到三种可能的解决方案:
initContainers:
- name: set-permissions
image: <image_name>
# Give user id 555 permissions for the mounted volume
command:
- chown
- -R
- 555:555
- /var/lib/data
volumeMounts:
- name: data
mountPath: /var/lib/data
在 Dockerfile 中创建用户组并分配组 ID。
使用用户 ID 创建用户并添加到 Dockerfile 中的组。
递归地更改用户进程想要读/写的文件夹的所有权。
将以下行添加到您的部署的 Pod 规范中:
spec:
securityContext:
runAsUser: 1099
runAsGroup: 1099
fsGroup: 1099
runAsUser
:指定对于 Pod 中的任何容器,所有进程都以用户 ID 1099
运行。
runAsGroup
:为 Pod 的任何容器内的所有进程指定 1099
的主要组 ID。如果省略此字段,则容器的主要组 ID 将为 root(0)
。指定 1099
时,创建的任何文件也将归用户 1099
和组 runAsGroup
所有。
fsGroup
:指定任何附加卷的所有者将成为组 ID 1099
的所有者。