local path provisioner
Less than 1 minute
local path provisioner
references
- https://github.com/rancher/local-path-provisioner
- https://github.com/rancher/local-path-provisioner/tree/master/deploy/chart/local-path-provisioner
installation
- prepare
local-path-provisioner.yaml
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: opt-local-path spec: syncPolicy: syncOptions: - CreateNamespace=true project: default source: repoURL: https://charts.containeroo.ch chart: local-path-provisioner targetRevision: 0.0.32 helm: releaseName: opt-local-path valuesObject: replicaCount: 1 image: repository: m.daocloud.io/docker.io/rancher/local-path-provisioner helperImage: repository: m.daocloud.io/docker.io/library/busybox tag: latest helperPod: resources: requests: cpu: 100m memory: 128Mi limits: cpu: 500m memory: 512Mi nodePathMap: - node: DEFAULT_PATH_FOR_NON_LISTED_NODES paths: - /opt/local-path/local-path-provisioner #- node: k3s1 #paths: #- /opt/disk-mount/local-path-provisioner storageClass: create: true defaultClass: false defaultVolumeType: local name: opt-local-path reclaimPolicy: Delete resources: requests: cpu: 100m memory: 128Mi limits: cpu: 500m memory: 512Mi destination: server: https://kubernetes.default.svc namespace: storage
- apply to k8s
kubectl -n argocd apply -f local-path-provisioner.yaml
- sync by argocd
argocd app sync argocd/opt-local-path
tests
- prepare
busybox-pvc-test.yaml
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: opt-local-path-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: opt-local-path --- apiVersion: batch/v1 kind: Job metadata: name: busybox-pvc-test-job spec: completions: 1 parallelism: 1 backoffLimit: 4 template: metadata: labels: app: busybox-pvc-test spec: restartPolicy: Never containers: - name: busybox-pvc-test image: m.daocloud.io/docker.io/library/busybox:latest command: - sh - -c - | echo "Writing to PVC..." RANDOM_STR=$(tr -dc A-Za-z0-9 </dev/urandom | head -c 16) echo "hello local path provisioner $RANDOM_STR" > /data/hello.txt echo "Reading from PVC..." READ_STR=$(cat /data/hello.txt) echo "Written content: hello local path provisioner $RANDOM_STR" echo "Read content: $READ_STR" if [ "$READ_STR" = "hello local path provisioner $RANDOM_STR" ]; then echo "PVC test completed successfully!" else echo "PVC test failed!" exit 1 fi volumeMounts: - name: opt-local-path-vol mountPath: /data volumes: - name: opt-local-path-vol persistentVolumeClaim: claimName: opt-local-path-pvc
- apply to k8s
kubectl -n default apply -f busybox-pvc-test.yaml
- check log of the test job
kubectl -n default logs job/busybox-pvc-test-job
- delete job and pvc
kubectl -n default delete job busybox-pvc-test-job kubectl -n default delete pvc opt-local-path-pvc