目录
🌟 在 KubeSphere 中配置 Local Path Provisioner 指向自定义目录 /app/k8s_data
🌟 在 KubeSphere 中配置 Local Path Provisioner 指向自定义目录 /app/k8s_data
在 Kubernetes 或 KubeSphere 集群中,配置一个轻量级的本地存储类(StorageClass)对于测试环境或小规模持久化数据十分实用。本文将介绍如何使用 Rancher 提供的 Local Path Provisioner,并将实际数据目录指定到本地路径 /app/k8s_data
,实现自动化本地卷(Local PV)动态供给。
📦 一、准备环境
本文假设你已经部署好 KubeSphere 集群,具备 kubectl
权限。
确保所有节点都有 /app/k8s_data
目录,并授予合适权限:
sudo mkdir -p /app/k8s_data
sudo chmod 777 /app/k8s_data
🚀 二、安装 Local Path Provisioner
直接执行官方提供的部署命令:
kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml
该命令会创建:
-
一个命名空间:
local-path-storage
-
一个 Deployment:
local-path-provisioner
-
一个默认 StorageClass:
local-path
但默认挂载路径是 /opt/local-path-provisioner
,接下来我们将其改为 /app/k8s_data
。
🛠 三、修改挂载路径到 /app/k8s_data
1️⃣ 编辑 ConfigMap:
kubectl -n local-path-storage edit configmap local-path-config
找到 config.json
内容,将其修改为:
{
"nodePathMap": [
{
"node": "DEFAULT_PATH_FOR_NON_LISTED_NODES",
"paths": ["/app/k8s_data"]
}
]
}
保存退出。
2️⃣ 重启 Provisioner Pod 使其生效:
kubectl -n local-path-storage delete pod -l app=local-path-provisioner
Kubernetes 会自动拉起新 Pod,并按新的路径配置工作。
✅ 四、验证效果
1️⃣ 创建 PVC:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: test-local-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Mi
storageClassName: local-path
应用:
kubectl apply -f test-pvc.yaml
2️⃣ 查看 PV 挂载路径:
kubectl get pv -o wide
kubectl describe pv <自动生成的-pv-name>
输出应包含:
Type: HostPath (bare host directory volume)
Path: /app/k8s_data/pvc-xxxxx-xxxxx
3️⃣ 检查宿主机路径是否同步:
登录对应节点:
ls /app/k8s_data
如果有以 pvc-
开头的子目录,说明 PVC 创建成功并正确挂载到了本地指定目录。
📌 五、设置为默认 StorageClass(可选)
如果你希望将该存储类作为默认使用:
kubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
🧩 总结
通过 Rancher 提供的 Local Path Provisioner,我们可以轻松为 KubeSphere 添加一个支持自动动态供给的本地存储类。通过修改 ConfigMap 将默认路径改为 /app/k8s_data
,就可以实现自定义的数据落盘位置,便于统一管理和备份。
📁 参考资料:
如需部署示例 YAML、Pod 测试脚本,欢迎留言获取。