使用 Local Path Provisioner
使用 Local Path Provisioner
概述
Local Path Provisioner 为 Kubernetes 用户提供了一种利用每个节点上的本地存储的方法。它支持多节点设置。本教程将向您展示如何在双节点 minikube 集群上设置 local-path-provisioner。
先决条件
- Minikube 版本高于 v1.27.0
- kubectl
教程
- 启动一个有2个节点的集群
- 启用
storage-provisioner-rancher
插件
$ minikube addons enable storage-provisioner-rancher
- 您应该能够在
local-path-storage
命名空间中看到 Pod
$ kubectl get pods -n local-path-storage
NAME READY STATUS RESTARTS AGE
local-path-provisioner-7f58b4649-hcbk9 1/1 Running 0 38s
local-path
StorageClass 应该被标记为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
- 以下
yaml
创建 PVC 和 Pod,用于在第二个节点(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>
- 在第二个节点上,我们能够看到创建的文件,其内容为
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