RootPV 部署指南
架构
RootPV 使用 runtime wrapper 和自动发现的 runtime adapter,在原生 containerd
overlayfs snapshotter 上把容器可写层持久化到 PVC。RootPV 不提供 containerd
二进制、不会安装 containerd patch,也不注册 proxy snapshotter。
节点本地文件均使用 RootPV 命名:运行状态在 /run/rootpv/rootfs,wrapper 和 adapter
配置在 /etc/rootpv,PVC anchor 为 .rootpv-anchor/<pod>/<container>,Webhook 注入
ROOTPV_POD_NAME。
安装
kubectl label node <node-name> ecloud.com/persistent-rootfs=true --overwrite
helm upgrade --install rootpv charts/rootpv \
--namespace rootpv-system \
--create-namespace \
--set image.repository=<image-repository> \
--set image.tag=<image-tag>
kubectl -n rootpv-system rollout status deploy/persistent-rootfs-controller --timeout=180s
kubectl -n rootpv-system rollout status ds/persistent-rootfsd --timeout=180s
启用持久 rootfs
Pod 需明确声明目标容器、PVC volume、PVC 内路径和严格基础镜像策略:
apiVersion: v1
kind: Pod
metadata:
name: rootpv-demo
annotations:
ecloud.com/persistent-rootfs: "true"
ecloud.com/rootfs-container: app
ecloud.com/rootfs-volume: data
ecloud.com/rootfs-path: containers/app
ecloud.com/rootfs-base-image-policy: Strict
spec:
containers:
- name: app
image: <your-image>
command: ["/bin/sh", "-ec", "echo ready; sleep 3600"]
volumeMounts:
- name: data
mountPath: /data
volumes:
- name: data
persistentVolumeClaim:
claimName: rootpv-data
RootPV admission 注入有效 RuntimeClass、adapter 证据、anchor mount 与 ROOTPV_POD_NAME。
验证结果应显示 native overlayfs、对应 adapter 和正确 delegate;GPU workload 使用原始
runtimeClassName: nvidia 并请求 nvidia.com/gpu。
卸载
先删除 RootPV workload 并确认 /run/rootpv/rootfs 已回收,再执行:
helm uninstall rootpv -n rootpv-system
kubectl delete namespace rootpv-system --ignore-not-found