- ansible/files 改为与文档 XX-YY 对齐的目录结构,更新相关 playbook 路径 - 新增 scripts/verify.sh 与 ansible/playbooks/verify/*.yml,移除单体 verify-matrix.yml - 补充 docs/00-02 矩阵状态、00-05 验证框架与流程、00-04 环境与 ylc65 工作机说明 - 增加 k3s 存储准备、Longhorn、local-path 等 playbook 与辅助脚本 Made-with: Cursor
2.4 KiB
2.4 KiB
04-09-nodejs-存储与卷
为 Node.js 工作负载挂载 临时卷 或 持久卷(PVC):日志、上传目录、
/tmp、只读配置目录等。
前置条件
- 已部署
nodejs-demo(04-01)。 - 持久化前请先完成存储类选型:
03-05-k3s-local-path-pvc.md、03-06-k3s-使用nfs存储.md、03-07-k3s-longhorn-持久化存储.md等。
清单路径(唯一真源)
| 本篇完整清单(含 PVC + /data 挂载,默认 storageClassName: local-path) | ansible/files/04-01-nodejs-demo/04-09-nodejs-demo.yaml |
| 应用 | kubectl apply -f ansible/files/04-01-nodejs-demo/04-09-nodejs-demo.yaml |
emptyDir、仅 ConfigMap 卷等变体可在该清单基础上自行删减 PVC 与 volumeMounts 做实验。
场景说明(白话)
- emptyDir:Pod 删掉数据就没,像临时盘;适合缓存、
/tmp。 - PVC:数据由存储驱动落到盘里,Pod 重建还可能挂上同一块盘(取决于存储类型与访问模式)。
- ConfigMap 挂成文件:适合「配置文件」形态,只读挂载很常见。
相对 04-08 的变更(原文 → 新文)
| 位置 | 原文(04-08) |
新文(04-09) |
|---|---|---|
| 资源列表 | 无 PVC | 新增 PersistentVolumeClaim nodejs-demo-data |
volumeMounts |
仅 /tmp |
增加 /data |
volumes |
仅 tmp emptyDir |
增加 persistentVolumeClaim |
emptyDir 缓存卷、ConfigMap 只读挂载 的片段写法见 Kubernetes 文档;可在 04-09-nodejs-demo.yaml 上自行合并实验。
部署与验证
kubectl apply -f ansible/files/04-01-nodejs-demo/04-09-nodejs-demo.yaml
kubectl get pvc -n default
kubectl exec deploy/nodejs-demo -n default -- df -h /data
删除
kubectl delete pvc nodejs-demo-data -n default
(注意:是否删除底层 PV 数据取决于 reclaim 策略与驱动行为。)
失败排查
- Multi-Attach error:RWO 卷被多个 Pod 同时挂载;改
ReadWriteMany存储类或单副本。 - 挂载失败:PVC 未 Bound;StorageClass 不存在。
06-01-k3s-networkpolicy-故障排查.md