Colima + Local PV 是 macOS 本地 Kubernetes 测试最简方案:需启用 --mount 挂载宿主目录为虚拟机内可写路径(如 ~/k8s-local-pv:/mnt/colima-pv),再静态创建带 nodeAffinity 和 hostPath 的 PV,绑定 PVC 后可验证数据持久性。
在 macos 上配置支持本地测试的 kubernetes 轻量级持久化卷(pv),核心是绕过云存储或 nfs 等复杂后端,直接利用宿主机磁盘资源,同时保持 kubernetes 原生 pvc/pv 抽象。colima + local pv 是当前最简洁、可靠、开箱即用的组合方案。
用 Colima 启动带本地存储支持的集群
Colima 默认使用 Lima 底层虚拟机,其根文件系统是只读快照,不能直接挂载 hostPath 或 Local PV。必须启用 额外挂载点 才能安全暴露本地目录供 Kubernetes 使用:
- 启动时指定挂载路径,例如将 macOS 的
~/k8s-local-pv映射为虚拟机内/mnt/colima-pv:
- 验证挂载是否生效:
colima ssh ls -l /mnt/colima-pv,应能看到目录内容且可写 - 该挂载点将成为后续 Local PV 的物理载体——它是一块“额外挂载的磁盘”,符合 Local PV “一个 PV 一块盘”原则,避免污染系统盘
手动创建 Local PV 并绑定 PVC
Local PV 不支持动态供给,需静态创建。关键在于 PV 定义中正确声明 nodeAffinity 和 hostPath 路径:
评估 Kubernetes 集群安全态势,覆盖 RBAC、工作负载安全、网络策略、基础设施即代码(IaC)、运行时监控和密钥管理等 30 项控制项……
- 先确认节点名:
kubectl get nodes,Colima 默认节点名为lima-colima - 编写 PV YAML(如
local-pv.yaml):
kind: PersistentVolume
metadata:
name: local-pv-dev
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: local-storage
local:
path: /mnt/colima-pv/data
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- lima-colima
- 应用 PV:
kubectl apply -f local-pv.yaml - 创建 PVC(
local-pvc.yaml)并指定 storageClassName:
kind: PersistentVolumeClaim
metadata:
name: my-local-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: local-storage
- 应用后,Kubernetes 会自动绑定 PVC 到匹配的 PV(状态变为
Bound)
验证数据持久性与 Pod 挂载
部署一个测试 Pod,挂载 PVC 并写入文件,然后删除重建验证数据是否保留:
- Pod YAML 中使用
volumeMounts和volumes引用 PVC:
- name: local-storage
persistentVolumeClaim:
claimName: my-local-pvc
volumeMounts:
- name: local-storage
mountPath: /data
- 进入容器执行:
echo "test-$(date)" > /data/hello.txt - 删除 Pod:
kubectl delete pod <name>,再重新创建 - 再次进入新 Pod,检查
/data/hello.txt是否存在且内容未变 - 也可在 macOS 主机上查看
~/k8s-local-pv/data/hello.txt,确认文件真实落盘
进阶:简化管理(可选)
若需批量管理多个 Local PV,可引入 local-path-provisioner(非动态 Provisioner,而是辅助工具):
- 它不提供动态供给,但能自动扫描指定目录(如
/mnt/colima-pv/pvs)下子目录,为每个子目录生成对应 PV - 部署命令:
kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/v0.0.24/deploy/local-path-storage.yaml - 之后只需在
/mnt/colima-pv/pvs下新建目录(如mysql-data),provisioner 会自动生成 PV,PVC 可按需绑定

















