<p>I have to share local <code>.ssh</code> directory content to pod. I search for hat and got answer from one of the post to share start as <a href="https://stackoverflow.com/a/48535001/243031"><code>--mount-string</code></a>.</p>

<pre><code>$ minikube start --mount-string="$HOME/.ssh/:/ssh-directory" --mount
😄  minikube v1.9.2 on Darwin 10.14.6
✨  Using the docker driver based on existing profile
👍  Starting control plane node m01 in cluster minikube
🚜  Pulling base image ...
🔄  Restarting existing docker container for "minikube" ...
🐳  Preparing Kubernetes v1.18.0 on Docker 19.03.2 ...
    ▪ kubeadm.pod-network-cidr=10.244.0.0/16
E0426 23:44:18.447396   80170 kubeadm.go:331] Overriding stale ClientConfig host https://127.0.0.1:32810 with https://127.0.0.1:32813
📁  Creating mount /Users/myhome/.ssh/:/ssh-directory ...
🌟  Enabling addons: default-storageclass, storage-provisioner
🏄  Done! kubectl is now configured to use "minikube"

❗  /usr/local/bin/kubectl is v1.15.5, which may be incompatible with Kubernetes v1.18.0.
💡  You can also use 'minikube kubectl -- get pods' to invoke a matching version
</code></pre>

<p>When I check the docker for the given Minikube, it return</p>

<pre><code>$ docker ps
CONTAINER ID        IMAGE                                COMMAND                  CREATED             STATUS              PORTS                                                                           NAMES
5ad64f642b63        gcr.io/k8s-minikube/kicbase:v0.0.8   "/usr/local/bin/entr…"   3 weeks ago         Up 45 seconds       127.0.0.1:32815-&gt;22/tcp, 127.0.0.1:32814-&gt;2376/tcp, 127.0.0.1:32813-&gt;8443/tcp   minikube
</code></pre>

<p>And check the <code>.ssh</code> directory content are there or not.</p>

<pre><code>$ docker exec -it 5ad64f642b63 ls /ssh-directory
id_rsa  id_rsa.pub  known_hosts
</code></pre>

<p>I have deployment yml as</p>

<pre><code>---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: api-deployment
  labels:
    stack: api
    app: api-web
spec:
  replicas: 1
  selector:
    matchLabels:
      app: api-web
  template:
    metadata:
      labels:
        app: api-web
    spec:
      containers:
        - name: api-web-pod
          image: tiangolo/uwsgi-nginx-flask 
          ports:
            - name: api-web-port
              containerPort: 80
          envFrom:
            - secretRef:
                name: api-secrets
          volumeMounts:
            - name: ssh-directory
              mountPath: /app/.ssh
      volumes:
        - name: ssh-directory
          hostPath:
            path: /ssh-directory/
            type: Directory
</code></pre>

<p>When it ran, it gives error for <code>/ssh-directory</code>.</p>

<pre><code>$ kubectl describe pod/api-deployment-f65db9c6c-cwtvt
Name:           api-deployment-f65db9c6c-cwtvt
Namespace:      default
Priority:       0
Node:           minikube/172.17.0.2
Start Time:     Sat, 02 May 2020 23:07:51 -0500
Labels:         app=api-web
                pod-template-hash=f65db9c6c
Annotations:    &lt;none&gt;
Status:         Pending
IP:
Controlled By:  ReplicaSet/api-deployment-f65db9c6c
Containers:
  api-web-pod:
    Container ID:
    Image:          tiangolo/uwsgi-nginx-flask
    Image ID:
    Port:           80/TCP
    Host Port:      0/TCP
    State:          Waiting
      Reason:       ContainerCreating
    Ready:          False
    Restart Count:  0
    Environment Variables from:
      api-secrets  Secret  Optional: false
    Environment:      &lt;none&gt;
    Mounts:
      /app/.ssh from ssh-directory (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-9shz5 (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             False
  ContainersReady   False
  PodScheduled      True
Volumes:
  ssh-directory:
    Type:          HostPath (bare host directory volume)
    Path:          /ssh-directory/
    HostPathType:  Directory
  default-token-9shz5:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-9shz5
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  &lt;none&gt;
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type     Reason       Age                 From               Message
  ----     ------       ----                ----               -------
  Normal   Scheduled    &lt;unknown&gt;           default-scheduler  Successfully assigned default/api-deployment-f65db9c6c-cwtvt to minikube
  Warning  FailedMount  11m                 kubelet, minikube  Unable to attach or mount volumes: unmounted volumes=[ssh-directory], unattached volumes=[default-token-9shz5 ssh-directory]: timed out waiting for the condition
  Warning  FailedMount  2m13s (x4 over 9m)  kubelet, minikube  Unable to attach or mount volumes: unmounted volumes=[ssh-directory], unattached volumes=[ssh-directory default-token-9shz5]: timed out waiting for the condition
  Warning  FailedMount  62s (x14 over 13m)  kubelet, minikube  MountVolume.SetUp failed for volume "ssh-directory" : hostPath type check failed: /ssh-directory/ is not a directory
</code></pre>

<p>When I check the content of <code>/ssh-directory</code> in docker.</p>

<p>It gives IO error.</p>

<pre><code>$ docker exec -it 5ad64f642b63 ls /ssh-directory
ls: cannot access '/ssh-directory': Input/output error
</code></pre>

<p>I know there are default mount points for Minikube. As mentioned in <a href="https://minikube.sigs.k8s.io/docs/handbook/mount/" rel="nofollow noreferrer">https://minikube.sigs.k8s.io/docs/handbook/mount/</a>, </p>

<pre><code>+------------+----------+---------------+----------------+
| Driver     |    OS    | HostFolder    | VM             |
+------------+----------+---------------+----------------+
| VirtualBox | Linux    | /home         |/hosthome       |
+------------+----------+---------------+----------------+
| VirtualBox | macOS    | /Users        |/Users          |
+------------+----------+---------------+----------------+
| VirtualBox | Windows  |C://Users      | /c/Users       |
+------------+----------+---------------+----------------+
|VMware Fusio|  macOS   |/Users         |/Users          |
+------------+----------+---------------+----------------+
| KVM        | Linux    | Unsupported.  |                |
+------------+----------+---------------+----------------+
| HyperKit   | Linux    | Unsupported   |(see NFS mounts)|  
+------------+----------+---------------+----------------+
</code></pre>

<p>But I installed minikube as <code>brew install minikube</code> and its set <code>driver</code> as <code>docker</code>.</p>

<pre><code>$ cat ~/.minikube/config/config.json
{
    "driver": "docker"
}
</code></pre>

<p>There is no mapping for <code>docker</code> driver in mount point.</p>

<p>Initially, this directory has the files, but somehow, when I try to create the pod, it delete or something is wrong.</p>

<p>While reproducing this on ubuntu I encountered  the exact issue. </p>

<p>The directory was indeed looked like mounted but the files were missing which lead me to think that this is a general issue with mounting directories with docker driver. </p>

<p>There is open issue on github about the same problem ( <a href="https://github.com/kubernetes/minikube/issues/2481" rel="nofollow noreferrer">mount directory empty</a> ) and open feature request <a href="https://github.com/kubernetes/minikube/issues/7604" rel="nofollow noreferrer">to mount host volumes into docker driver</a>. </p>

<p>Inspecting minikube container shows no record of that mounted volume and confirms information mentioned in the github request that the only volume shared with host as of now is the one that mounts by default (that is <code>/var/lib/docker/volumes/minikube/_data</code> mounted into minikube's <code>/var</code> directory).</p>

<pre><code>$ docker inspect minikube
"Mounts": [ 
  { 
    "Type": "volume", 
    "Name": "minikube", 
    "Source": "/var/lib/docker/volumes/minikube/_data", 
    "Destination": "/var", 
    "Driver": "local", 
    "Mode": "z", 
    "RW": true, 
    "Propagation": ""
  }
</code></pre>

<p>As the workaround you could copy your <code>.ssh</code> directory into the running minikube docker container with following command: </p>

<pre><code>docker cp  $HOME/.ssh minikube:&lt;DESIRED_DIRECTORY&gt; 
</code></pre>

<p>and then mount this desired directory into the pod.</p>
