Configure a Kubernetes-pod to use persistent volume for storage.

0 votes

I have created a hostPath Persistent volume. Here is the configuration file for the same:

pods/storage/pv-volume.yaml 

kind: PersistentVolume
apiVersion: v1
metadata:
  name: task-pv-volume
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"

I have created the persistent volume

kubectl apply -f https://k8s.io/examples/pods/storage/pv-volume.yaml

On executing the following command:

kubectl get pv task-pv-volume

The output shows that the PersistentVolume has a STATUS of Available.

NAME             CAPACITY   ACCESSMODES   RECLAIMPOLICY   STATUS      CLAIM     STORAGECLASS   REASON    AGE
task-pv-volume   10Gi       RWO           Retain          Available             manual                   4s

How do i configure my pod to use this persistent volume?

Jul 23 in Kubernetes by Namik
• 1,200 points
308 views

1 answer to this question.

0 votes

The output shows that the PersistentVolume has a STATUS of Available. This means it has not yet been bound to a PersistentVolumeClaim.

Create a PersistentVolumeClaim:

The next step is to create a PersistentVolumeClaim

Pods use PersistentVolumeClaims to request physical storage. 

In this demo, you create a PersistentVolumeClaim that requests a volume of at least three gibibytes that can provide read-write access for at least one Node.

Here is the configuration file for the PersistentVolumeClaim:

pods/storage/pv-claim.yaml 

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: task-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 3Gi
  • Create the PersistentVolumeClaim:

kubectl apply -f https://k8s.io/examples/pods/storage/pv-claim.yaml
  • After you create the PersistentVolumeClaim, the Kubernetes control plane looks for a PersistentVolume that satisfies the claim’s requirements. If the control plane finds a suitable PersistentVolume with the same StorageClass, it binds the claim to the volume.

  • Look again at the PersistentVolume:

kubectl get pv task-pv-volume
  • Now the output shows a STATUS of Bound.

NAME             CAPACITY   ACCESSMODES   RECLAIMPOLICY   STATUS    CLAIM                   STORAGECLASS   REASON    AGE
task-pv-volume   10Gi       RWO           Retain          Bound     default/task-pv-claim   manual                   2m
  • Look at the PersistentVolumeClaim:

kubectl get pvc task-pv-claim

The output shows that the PersistentVolumeClaim is bound to your PersistentVolume, task-pv-volume.

NAME            STATUS    VOLUME           CAPACITY   ACCESSMODES   STORAGECLASS   AGE
task-pv-claim   Bound     task-pv-volume   10Gi       RWO           manual         30s

Create a Pod

The next step is to create a Pod that uses your PersistentVolumeClaim as a volume.

Here is the configuration file for the Pod:

pods/storage/pv-pod.yaml 

kind: Pod
apiVersion: v1
metadata:
  name: task-pv-pod
spec:
  volumes:
    - name: task-pv-storage
      persistentVolumeClaim:
        claimName: task-pv-claim
  containers:
    - name: task-pv-container
      image: nginx
      ports:
        - containerPort: 80
          name: "http-server"
      volumeMounts:
        - mountPath: "/usr/share/nginx/html"
          name: task-pv-storage 

Notice that the Pod’s configuration file specifies a PersistentVolumeClaim, but it does not specify a PersistentVolume. 

From the Pod’s point of view, the claim is a volume.

  • Create the Pod:

kubectl apply -f https://k8s.io/examples/pods/storage/pv-pod.yaml
  • Verify that the Container in the Pod is running;

kubectl get pod task-pv-pod
  • Get a shell to the Container running in your Pod:

kubectl exec -it task-pv-pod -- /bin/bash
  • In your shell, verify that nginx is serving the index.html file from the hostPath volume:

root@task-pv-pod:/# apt-get update
root@task-pv-pod:/# apt-get install curl
root@task-pv-pod:/# curl localhost
  • The output shows the text that you wrote to the index.html file on the hostPath volume:

Hello from Kubernetes storage
answered Jul 23 by Sirajul
• 31,180 points

Related Questions In Kubernetes

0 votes
1 answer

Kubernetes: Can we use multiple claims out of a persistent volume?

The mapping between persistentVolume and persistentVolumeClaim is ...READ MORE

answered Jul 16 in Kubernetes by Sirajul
• 31,180 points
30 views
0 votes
1 answer

Can I configure my kubernetes job to run for a specified time?

When we create a job spec, we ...READ MORE

answered Jul 17 in Kubernetes by Sirajul
• 31,180 points
23 views
0 votes
1 answer

Can i configure my kubernetes pod to use multiple service accounts ?

A service account provides an identity for ...READ MORE

answered Jul 17 in Kubernetes by Sirajul
• 31,180 points
107 views
0 votes
1 answer

How to configure a Pod to use the updated configMap?

If the config map is mounted into ...READ MORE

answered Jul 18 in Kubernetes by Sirajul
• 31,180 points
30 views
0 votes
1 answer
0 votes
3 answers

Error while joining cluster with node

Hi Kalgi after following above steps it ...READ MORE

answered Jan 17 in Others by anonymous
2,627 views
+3 votes
1 answer
+1 vote
1 answer
0 votes
3 answers

Kubernetes: How to resize a Persistent Volume?

That issue happened to me when I ...READ MORE

answered Oct 1 in Kubernetes by Gon
• 180 points
400 views