[英]WSL2 Kubernetes - How to mount local folder with specifying user/group rights
我正在使用 WSL2 Debian 和 Docker 桌面,我想將我的卷數據保存在本地文件夾中(最好是指向 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
對於這個問題,我可以想到三種可能的解決方案:
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 中的組。
遞歸更改用戶進程想要讀取/寫入的文件夾的所有權。
將以下行添加到 Deployment 的 Pod 規范中:
spec:
securityContext:
runAsUser: 1099
runAsGroup: 1099
fsGroup: 1099
如文檔中所述:
runAsUser
:指定對於 Pod 中的任何容器,所有進程都以用戶 ID 1099
運行。
runAsGroup
:為 Pod 的任何容器中的所有進程指定主組 ID 1099
。 如果省略此字段,則容器的主要組 ID 將為root(0)
。 當指定runAsGroup
時,創建的任何文件也將歸用戶1099
和組1099
所有。
fsGroup
:指定任何附加卷的所有者將是組 ID 1099
的所有者。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.