kubernetes mountPath vs hostPath

6/29/2018

I am trying to deploy an app to kubernetes cluster and I want to store data in Persistent Volume. However, I am very confused about two parameters in the setup. Can someone explains what is the different between volumes.hostPath and volumeMounts.mountPath? I read some documentations online but it does not help me to understand.

volumeMounts:
  - mountPath: /var/lib/mysql

volumes:
  hostPath:
    path: /k8s

If my setup is as above, is the volume going to be mounted at /k8s/var/lib/mysql?

-- Jiashen Cao
kubernetes

2 Answers

6/29/2018

The mount path is always the destination inside the Pod a volume gets mounted to.

I think the documentation is pretty clear on what hostPath does:

A hostPath volume mounts a file or directory from the host node’s filesystem into your Pod. This is not something that most Pods will need, but it offers a powerful escape hatch for some applications.

For example, some uses for a hostPath are:

- running a Container that needs access to Docker internals; use a hostPath of /var/lib/docker
- running cAdvisor in a Container; use a hostPath of /sys
- allowing a Pod to specify whether a given hostPath should exist prior to the Pod running, whether it should be created, and what it should exist as

So your example does not what you think it does. It would mount the node's /k8s directory into the Pod at /var/lib/mysql.

This should be done only if you fully understand the implications!

-- matthias krull
Source: StackOverflow

9/23/2019

Host path: The directory in your node.
Mount path: The directory in your pod.

Your setup will mount the node's directory(/k8s) into the pod's directory(at /var/lib/mysql)

-- AATHITH RAJENDRAN
Source: StackOverflow