Volume mounts not working Kubernetes and WSL 2 and Docker Volume mounts not working Kubernetes and WSL 2 and Docker kubernetes kubernetes

Volume mounts not working Kubernetes and WSL 2 and Docker


According to the following thread, hostPath volumes are not officially supported for wsl2, yet. They do suggest a workaround, though I had trouble getting it to work. I have found that prepending /run/desktop/mnt/host/c seems to work for me.

// C:\someDir\volumeDirhostPath:  path: /run/desktop/mnt/host/c/someDir/volumeDir  type: DirectoryOrCreate

Thread Source: https://github.com/docker/for-win/issues/5325
Suggested workaround from thread: https://github.com/docker/for-win/issues/5325#issuecomment-567594291


Using @RyanDarnell's excellent answer above, here is what worked for me

Objective: get message-db with password using docker build --secret running in local docker-desktop kubernetes with StatefulSet and StorageClass using Skaffold

$kubectl get nodes -o wideNAME             STATUS   ROLES                  AGE   VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE         KERNEL-VERSION                   CONTAINER-RUNTIMEdocker-desktop   Ready    control-plane,master   21h   v1.21.1   <internalip>   <none>        Docker Desktop   5.4.72-microsoft-standard-WSL2   docker://20.10.7
#./k8s/storage-class.yamlapiVersion: storage.k8s.io/v1kind: StorageClassmetadata:  name: local-storage  labels:    app: postgres-databaseprovisioner: kubernetes.io/no-provisionervolumeBindingMode: WaitForFirstConsumerreclaimPolicy: Delete
#./k8s/persistent-volume.yamlapiVersion: v1kind: PersistentVolumemetadata:  name: local-pv1  labels:    app: postgres-databasespec:  capacity:    storage: 128Mi  accessModes:  - ReadWriteOnce  persistentVolumeReclaimPolicy: Retain  storageClassName: local-storage  local:    path: /run/desktop/mnt/host/c/kubernetes-mount-path # created this folder at C:\kubernetes-mount-path  nodeAffinity:    required:      nodeSelectorTerms:      - matchExpressions:        - key: kubernetes.io/hostname          operator: In          values:          - docker-desktop
#./k8s/stateful-set.yamlapiVersion: apps/v1kind: StatefulSetmetadata:  name: postgres-databasespec:  selector:    matchLabels:      app: postgres-database  serviceName: postgres-service  replicas: 1  template:    metadata:      labels:        app: postgres-database    spec:      containers:      - name: message-db-container        image: message-db-test        volumeMounts:        - name: postgres-disk          mountPath: /var/lib/postgresql/data        env:        - name: PGDATA          value: /var/lib/postgresql/data/pgdata        - name: POSTGRES_PASSWORD          value: <postgres-password>  volumeClaimTemplates:  - metadata:      name: postgres-disk      labels:        app: postgres-database    spec:      selector:        matchLabels:          app: postgres-database      storageClassName: local-storage      accessModes:       - ReadWriteOnce      resources:        requests:          storage: 128Mi
#./k8s/service.yamlapiVersion: v1kind: Servicemetadata:  name: postgres-loadbalancerspec:  selector:    app: postgres-database  type: LoadBalancer  ports:    - port: 5432      targetPort: 5432
#./Dockerfile# syntax = docker/dockerfile:1.3FROM postgres:13.3-alpine3.14RUN apk add --no-cache curl tarRUN mkdir -p /usr/src/eventide \  && curl -L https://github.com/message-db/message-db/tarball/v1.2.6 -o /usr/src/eventide/message-db.tgzRUN tar -xf /usr/src/eventide/message-db.tgz --directory /usr/src/eventide# change message_store login passwordRUN --mount=type=secret,id=message-db-pass sed -i "s/WITH LOGIN/WITH LOGIN ENCRYPTED PASSWORD '$(cat /run/secrets/message-db-pass)'/g" /usr/src/eventide/message-db-message-db-759a4f3/database/roles/message-store.sqlRUN echo -e "#!/bin/sh\ncd /usr/src/eventide/message-db-message-db-759a4f3/database\n./install.sh" > /docker-entrypoint-initdb.d/rundbscripts.sh RUN docker-entrypoint.sh postgres --versionENTRYPOINT docker-entrypoint.sh postgres
#./secret.txt<postgres-password>
#./skaffold.yamlkind: ConfigapiVersion: skaffold/v2beta20build:  artifacts:    - image: message-db-test      context: .      docker:        secret:          id: message-db-pass          src: secret.txt  local:     useBuildkit: truedeploy:  kubectl:    manifests:    - k8s/*.yaml

run skaffold debug -v debug to startup