news 2026/5/19 14:49:55

K8S部署LocalPathProvisioner本地存储——筑梦之路

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
K8S部署LocalPathProvisioner本地存储——筑梦之路

大多数生产环境会使用云存储或网络存储(如 EBS、NAS、Ceph)。但对于本地环境、轻量级集群,最快速、最低成本、性能最高的存储方式其实是:本地存储(Local PV)

项目地址:https://github.com/rancher/local-path-provisioner

apiVersion: v1 kind: Namespace metadata: name: local-path-storage --- apiVersion: v1 kind: ServiceAccount metadata: name: local-path-provisioner-service-account namespace: local-path-storage --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: local-path-provisioner-role namespace: local-path-storage rules: - apiGroups: [""] resources: ["pods"] verbs: ["get", "list", "watch", "create", "patch", "update", "delete"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: local-path-provisioner-role rules: - apiGroups: [""] resources: ["nodes", "persistentvolumeclaims", "configmaps", "pods", "pods/log"] verbs: ["get", "list", "watch"] - apiGroups: [""] resources: ["persistentvolumes"] verbs: ["get", "list", "watch", "create", "patch", "update", "delete"] - apiGroups: [""] resources: ["events"] verbs: ["create", "patch"] - apiGroups: ["storage.k8s.io"] resources: ["storageclasses"] verbs: ["get", "list", "watch"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: local-path-provisioner-bind namespace: local-path-storage roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: local-path-provisioner-role subjects: - kind: ServiceAccount name: local-path-provisioner-service-account namespace: local-path-storage --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: local-path-provisioner-bind roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: local-path-provisioner-role subjects: - kind: ServiceAccount name: local-path-provisioner-service-account namespace: local-path-storage --- apiVersion: apps/v1 kind: Deployment metadata: name: local-path-provisioner namespace: local-path-storage spec: replicas: 1 selector: matchLabels: app: local-path-provisioner template: metadata: labels: app: local-path-provisioner spec: serviceAccountName: local-path-provisioner-service-account containers: - name: local-path-provisioner image: rancher/local-path-provisioner:v0.0.32 imagePullPolicy: IfNotPresent command: - local-path-provisioner - --debug - start - --config - /etc/config/config.json volumeMounts: - name: config-volume mountPath: /etc/config/ env: - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: CONFIG_MOUNT_PATH value: /etc/config/ volumes: - name: config-volume configMap: name: local-path-config --- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: local-path provisioner: rancher.io/local-path volumeBindingMode: WaitForFirstConsumer reclaimPolicy: Retain --- kind: ConfigMap apiVersion: v1 metadata: name: local-path-config namespace: local-path-storage data: config.json: |- { "nodePathMap":[ { "node":"DEFAULT_PATH_FOR_NON_LISTED_NODES", "paths":["/opt/local-path-provisioner"] } ] } setup: |- #!/bin/sh set -eu mkdir -m 0777 -p "$VOL_DIR" teardown: |- #!/bin/sh set -eu rm -rf "$VOL_DIR" helperPod.yaml: |- apiVersion: v1 kind: Pod metadata: name: helper-pod spec: priorityClassName: system-node-critical tolerations: - key: node.kubernetes.io/disk-pressure operator: Exists effect: NoSchedule containers: - name: helper-pod image: busybox imagePullPolicy: IfNotPresent

默认StorageClasslocal-path,所有节点都会使用/opt/local-path-provisioner作为存储路径,不过可以修改ConfigMap来自定义存储路径

可选:修改不同节点使用不同目录作为存储

{ "nodePathMap": [ { "node": "node1", "paths": ["/data/local1"] }, { "node": "node2", "paths": ["/data/local2"] } ] }
# 重启 kubectl -n local-path-storage rollout restart deploy/local-path-provisioner

测试

cat > nginx-local-pvc.yaml <<EOF apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nginx-local-pvc spec: accessModes: - ReadWriteOnce storageClassName: local-path resources: requests: storage: 2Gi EOF cat > nginx-deploy.yml <<EOF apiVersion: apps/v1 kind: Deployment metadata: name: nginx-local spec: replicas: 1 selector: matchLabels: app: nginx-local template: metadata: labels: app: nginx-local spec: initContainers: - name: init-index image: busybox command: ["sh", "-c", "echo 'Hello from Local Path Provisioner!' > /data/index.html"] volumeMounts: - name: local-storage mountPath: /data containers: - name: nginx image: nginx:1.27 ports: - containerPort: 80 volumeMounts: - name: local-storage mountPath: /usr/share/nginx/html volumes: - name: local-storage persistentVolumeClaim: claimName: nginx-local-pvc EOF

做个记录

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/18 14:29:14

联想平板官方售后渠道详解:从屏幕碎裂到系统故障的一站式解决之道

联想平板电脑&#xff0c;包括小新Pad系列、拯救者Y系列等&#xff0c;以其出色的影音娱乐和移动办公体验赢得了众多用户。然而&#xff0c;与笔记本相比&#xff0c;平板更精密的集成度、频繁的移动使用特性&#xff0c;使其在遇到屏幕损坏、电池衰减、系统故障或接口问题时&a…

作者头像 李华
网站建设 2026/5/10 7:12:26

GPT-5.2评测:OpenAI如何用“能干“回应Gemini的挑战!

简介 OpenAI发布GPT-5.2模型&#xff0c;在Google Gemini 3 Pro强势背景下展现反击实力。GPT-5.2在专业工作(GDPval测试)、编程(SWE-Bench)、长上下文理解、视觉能力等多领域实现突破&#xff0c;部分任务达到或超越人类专家水平。新模型在抗幻觉、Agent工具调用和科学推理方面…

作者头像 李华
网站建设 2026/5/10 21:51:06

美团大模型算法岗面试亲历:2025年大模型算法工程师面试宝典,百问百答,助你直通大厂!

简介 本文详细记录了美团大模型算法岗位面试经历&#xff0c;涵盖模型结构、训练流程、推理优化、多模态技术等核心问题。文章提供了具体问题的解答思路&#xff0c;总结了面试准备关键点&#xff0c;包括扎实基础知识、紧跟技术前沿、动手实践能力和项目深度表达能力。对准备大…

作者头像 李华
网站建设 2026/5/14 23:10:46

小学生学C++编程 (C++风格的输入与输出)

一、&#x1f9d9;‍♂️《C 王国的对话魔法》—— 学会和电脑“说话”的第一课在 C 王国里&#xff0c;电脑其实是个“小机器人&#x1f916;”&#xff0c; 它不会主动说话&#xff0c;也不会自己知道答案&#xff0c; &#x1f449; 你必须教会它两件事&#xff1a;1️⃣ 怎…

作者头像 李华
网站建设 2026/5/9 23:27:57

优化MySQL慢查询问题的识别与解决方法解析

随着互联网技术的飞速发展&#xff0c;越来越多的企业和个人依赖于数据库系统来存储和管理海量的数据。MySQL作为全球广泛使用的开源数据库管理系统&#xff0c;凭借其高效、稳定的性能&#xff0c;在各类应用中都扮演着关键角色。然而&#xff0c;在数据库的日常使用中&#x…

作者头像 李华
网站建设 2026/5/18 17:30:31

前端可视化图表库精选与实战指南

前端可视化图表库精选与实战指南 让数据说话&#xff0c;用图表讲故事 &#x1f4ca; 引言 在大数据时代&#xff0c;数据可视化已经成为前端开发中不可或缺的一部分。一个优秀的数据可视化图表能够将复杂的数据转化为直观易懂的图形&#xff0c;帮助用户快速理解数据背后的规…

作者头像 李华