Github: https://github.com/vfarcic/k8s-specs

Start minikube and enable ingress :

minikube start --vm-driver=virtualbox
minikube addons enable ingress

hostPath

Start a pod called docker based on the docker image:

kubectl run docker --image=docker:17.11 --restart=Never docker image ls

Show the pod status:

kubectl get pods --show-all

Show the logs:

kubectl logs docker

Delete the pod:

kubectl delete pod docker

hostPath allows us to mount a file or a directory from a host to Pods and, through them, to containers. Other types are Directory/DirectoryOrCreate, File/FileOrCreate, Socket, CharDevice, BlockDevice

Create the pod:

kubectl create -f volume/docker.yml

List the docker images:

kubectl exec -it docker -- docker image ls

Delete the pod:

kubectl delete -f volume/docker.yml

emptyDir

Show the yml definition:

cat volume/jenkins.yml

Create the object:

kubectl create -f volume/jenkins.yml --record --save-config
kubectl rollout status deploy jenkins

Open in browser:

open "http://$(minikube ip)/jenkins"

Get the pod name:

POD_NAME=$(kubectl get pods \
    -l service=jenkins,type=master \
    -o jsonpath="{.items[*].metadata.name}")

Kill the main process:

kubectl exec -it $POD_NAME kill 1

Get the pods:

kubectl get pods

Open in browser:

open "http://$(minikube ip)/jenkins"
open "http://$(minikube ip)/jenkins/newJob"
cat volume/jenkins-empty-dir.yml

Apply it:

kubectl apply -f volume/jenkins-empty-dir.yml

Wait the rollout finish:

kubectl rollout status deploy jenkins

Do the same process above and the job is persistent.

An emptyDir Volume is created when a Pod is assigned to a node. It will exist for as long as the Pod continues running on that server.

emptyDir can survive container failures. When a container crashes, a Pod is not removed from the node. Instead, Kubernetes will recreate the failed container inside the same Pod and, thus, preserve the emptyDir Volume.

-End-