Skip to content

Commit

Permalink
Add tutorial of using local-path-provisioner
Browse files Browse the repository at this point in the history
  • Loading branch information
presztak committed Sep 23, 2023
1 parent 49b28ff commit ddb3e72
Showing 1 changed file with 103 additions and 0 deletions.
103 changes: 103 additions & 0 deletions site/content/en/docs/tutorials/local_path_provisioner.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
---
title: "Using Local Path Provisioner"
linkTitle: "Using Local Path Provisioner"
weight: 1
date: 2022-10-05
description: >
Using Local Path Provisioner
---

## Overview

[Local Path Provisioner](https://github.com/rancher/local-path-provisioner), provides a way for the Kubernetes users to utilize the local storage in each node. It supports multi-node setups. This tutorial will show you how to setup local-path-prvisioner on two node minikube cluster.

## Prerequisites

- Minikube version higher than v1.27.0
- kubectl

## Tutorial

- Start a cluster with 2 nodes:

```shell
$ minikube start -n 2
```

- Enable `storage-provisioner-rancher` addon:

```
$ minikube addons enable storage-provisioner-rancher
```

- You should be able to see Pod in the `local-path-storage` namespace:

```
$ kubectl get pods -n local-path-storage
NAME READY STATUS RESTARTS AGE
local-path-provisioner-7f58b4649-hcbk9 1/1 Running 0 38s
```

- The `local-path` StorageClass should be marked as `default`:

```
$ kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
local-path (default) rancher.io/local-path Delete WaitForFirstConsumer false 107s
standard k8s.io/minikube-hostpath Delete Immediate false 4m27s
```

- The following `yaml` creates PVC and Pod that creates file with content on second node (minikube-m02):

```
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: test-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 64Mi
---
apiVersion: v1
kind: Pod
metadata:
name: test-local-path
spec:
restartPolicy: OnFailure
nodeSelector:
"kubernetes.io/hostname": "minikube-m02"
containers:
- name: busybox
image: busybox:stable
command: ["sh", "-c", "echo 'local-path-provisioner' > /test/file1"]
volumeMounts:
- name: data
mountPath: /test
volumes:
- name: data
persistentVolumeClaim:
claimName: test-pvc
```

```
$ kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
test-pvc Bound pvc-f07e253b-fea7-433a-b0ac-1bcea3f77076 64Mi RWO local-path 5m19s
```

```
$ kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
test-local-path 0/1 Completed 0 5m19s 10.244.1.5 minikube-m02 <none> <none>
```

- On the second node we are able to see created file with content `local-path-provisioner`:

```
$ minikube ssh -n minikube-m02 "cat /opt/local-path-provisioner/pvc-f07e253b-fea7-433a-b0ac-1bcea3f77076_default_test-pvc/file1"
local-path-provisioner
```

0 comments on commit ddb3e72

Please sign in to comment.