Myluzh Blog

K8S 使用Local Path Storage(本地路径存储)

发布时间: 2024-11-19 文章作者: myluzh 分类名称: Kubernetes 朗读文章


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

发表评论