Docker 桌面 Kubernetes Windows PV 非根容器

Docker Desktop Kubernetes Windows PV Non Root Container

我正在尝试让 Wordpress 运行 成为跨副本 wp-config.php 的共享卷。我正在 Docker 桌面上为 Windows 在 Ubuntu WSL v2 之上开发我的清单。我已经启用了 Docker Desktop 的 Kubernetes 功能,除了 PersistentVolume resx 之外,它似乎工作正常。以下是我的清单中的相关片段:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv0
  namespace: yuknis-com
spec:
  capacity:
    storage: 60Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteMany
  storageClassName: local-storage
  local:
    path: /c/Users/Kirkland/pv0
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - "docker-desktop"
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  labels:
    app: pvc0
  name: wordpress-pvc
  namespace: yuknis-com
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 60Gi
  storageClassName: local-storage
apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress
  namespace: yuknis-com
  labels:
    app: wordpress
spec:
  replicas: 1
  selector:
    matchLabels:
      app: wordpress
  template:
    metadata:
      labels:
        app: wordpress
    spec:
      volumes:
      - name: wordpress
        persistentVolumeClaim:
          claimName: wordpress-pvc
      initContainers:
      - name: volume-permissions
        image: busybox
        command: ['sh', '-c', 'chmod -R g+rwX /bitnami']
        volumeMounts:
        - mountPath: /bitnami
          name: wordpress
      containers:
      - name: wordpress
        image: yuknis/wordpress-nginx-phpredis:latest
        envFrom:
        - configMapRef: 
            name: wordpress
        volumeMounts:
        - name: wordpress
          mountPath: /bitnami
        ports:
        - containerPort: 8080
          protocol: TCP
        - containerPort: 8443
          protocol: TCP

当我尝试在 MacOS 上 运行 我的应用程序时,它在上面运行良好。但是,当我尝试在 Windows 上 运行 它时,它在 initContainer 部分失败,错误为:

chmod: /bitnami: Operation not permitted
chmod: /bitnami: Operation not permitted

为什么这可以在 MacOS 上运行,但不能在 WSL 之上的 Windows 上运行?有什么想法吗?

有一个known issue。 Docker Desktop 有自己的 WSL 发行版,因此您无法从同一根目录访问它。

此问题的解决方法是更改​​ PV 中的路径:

spec:
  capacity:
    storage: 60Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteMany
  storageClassName: hostpath
  local:
    path: /run/desktop/mnt/host/c/Users/Kirkland/pv0

检查github post我链接的使用此方法的注意事项。