K8S 使用Local Path Storage(本地路径存储)
作者:myluzh 分类: Kubernetes 长度:3169 阅读:724
0x01 概述
Local Path Provisioner 是 Kubernetes 社区支持的解决方案,允许使用节点上的本地磁盘。使用 Local Path Storage(本地路径存储)通过将本地目录(如节点的磁盘目录)用作存储池,可以创建一个基础存储类。Local Path Storage(本地路径存储)是一种轻量级存储方案,通过将节点的本地磁盘目录(如 /mnt/data 等)作为存储池来实现持久化存储。这类存储通常被用作 Kubernetes 集群的基础存储类,特别适合测试环境或轻量级生产场景。它为 Pod 提供了一种简单的持久化存储方式,但由于数据存储在节点本地,并未实现分布式存储,因此不适合高可用或大规模生产环境。
0x02 安装 Local Path Provisioner
1、安装 Local Path Provisioner
root@k8s-master:~# kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml
2、验证安装 确认存储类已安装:
root@k8s-master:~# kubectl get storageclass
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
local-path (default) rancher.io/local-path Delete WaitForFirstConsumer false 35m
3、设置为默认存储池(可选)
root@k8s-master:~# kubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
4、配置本地路径
当使用 Local Path Provisioner 配置 K8s 本地存储时,通常需要以下操作来确保目录能够被正确访问和使用,
# 查看当前使用的存储路径
root@k8s-master:~# kubectl -n local-path-storage get configmap local-path-config -o yaml | grep paths
"paths":["/opt/local-path-provisioner"]
# 在k8s每个节点都创建目录跟权限
sudo mkdir -p /opt/local-path-provisioner
sudo chmod 777 /opt/local-path-provisioner
5、查看local-path-provisioner是否起来
root@k8s-master:~# kubectl get pods -n local-path-storage
NAME READY STATUS RESTARTS AGE
# 发现镜像拉取失败 需要替换成私有仓地址
local-path-provisioner-798b97f8f7-jg884 0/1 ImagePullBackOff 0 5m29s
替换镜像地址为私有仓地址
root@k8s-master:~# kubectl edit deployment local-path-provisioner -n local-path-storage
image: 172.30.82.223:5443/rancher/local-path-provisioner:v0.0.30
6、关于helper-pod起不来的问题解决
在应用创建的时候,还是提示pv没创建成功,经过排查发现有个名叫helper-pod也是镜像拉取失败,需要把helper-pod的镜像也换成私有镜像仓。
root@k8s-master:~# kubectl get pod -n local-path-storage
NAME READY STATUS RESTARTS AGE
helper-pod-create-pvc-0c6af74d-61c0-4fbe-9431-ab37a533444b 0/1 ErrImagePull 0 113s
helper-pod-create-pvc-33ad5b18-9800-4006-9099-d0082d8c6cde 0/1 ErrImagePull 0 113s
helper-pod-create-pvc-6e85f33d-5fe3-444d-9d07-1d41feeb4cc7 0/1 ImagePullBackOff 0 112s
helper-pod-create-pvc-bb098b75-c492-445b-a620-770d65b43224 0/1 ImagePullBackOff 0 83s
helper-pod 使用的镜像定义是busybox,也替换成私有镜像仓地址
root@k8s-master:~# kubectl edit configmap local-path-config -n local-path-storage
...
containers:
- name: helper-pod
image: 172.30.82.223:5443/base/busybox:240703
imagePullPolicy: IfNotPresent
...
k8s pv pvc storageclass 本地路径存储 Local-Path-Storage localpath