Files
Deploy-Laboratory/docs/04-11-nodejs-存储与卷.md
2026-03-29 09:08:01 +08:00

3.1 KiB
Raw Permalink Blame History

04-11-nodejs-存储与卷

为 Node.js 工作负载挂载 临时卷持久卷PVC:日志、上传目录、/tmp、只读配置目录等。

TL;DR

  • 手动练习:复制本课目录 ansible/files/04-11/ 下清单到目标路径,按需改字段后按本文 kubectl/bash 操作(学习路径可不使用 verify
  • 自动化验收./ansible/bin/verify.sh run 04-11
  • 关键前置:按本文「前置条件」准备环境变量/Secret/入口 IP
  • 成功判据:达到本文「预期」且 playbook 断言通过
  • 排障:见本文「排障」

前置条件

  • 已部署 nodejs-demo04-01)。
  • 持久化前请先完成存储类选型:03-05-k3s-local-path-pvc.md03-06-k3s-使用nfs存储.md03-07-k3s-longhorn-持久化存储.md 等。

清单路径(本课分目录)

| 本篇完整清单(含 PVC + /data 挂载,默认 storageClassName: local-path | ansible/files/04-11/04-11-nodejs-demo.yaml | | 应用 | kubectl apply -f ansible/files/04-11/04-11-nodejs-demo.yaml |

emptyDir、仅 ConfigMap 卷等变体可在该清单基础上自行删减 PVC 与 volumeMounts 做实验。

场景说明(白话)

  • emptyDirPod 删掉数据就没,像临时盘;适合缓存、/tmp
  • PVC数据由存储驱动落到盘里Pod 重建还可能挂上同一块盘(取决于存储类型与访问模式)。
  • ConfigMap 挂成文件:适合「配置文件」形态,只读挂载很常见。

相对 04-10 的变更(原文 → 新文)

位置 原文(04-10 新文(04-11
资源列表 无 PVC 新增 PersistentVolumeClaim nodejs-demo-data
volumeMounts /tmp 增加 /data
volumes tmp emptyDir 增加 persistentVolumeClaim

emptyDir 缓存卷ConfigMap 只读挂载 的片段写法见 Kubernetes 文档;可在 04-11-nodejs-demo.yaml 上自行合并实验。

部署与验证

kubectl apply -f ansible/files/04-11/04-11-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 errorRWO 卷被多个 Pod 同时挂载;改 ReadWriteMany 存储类或单副本。
  • 挂载失败PVC 未 BoundStorageClass 不存在。
  • 06-01-k3s-networkpolicy-故障排查.md

相关文档

排障

  • 先看 playbook 输出:失败时先定位是 deploy/wait/http_check 哪一步。
  • 集群侧总览kubectl get nodes -o widekubectl -n kube-system get pods -o wide
  • 事件与日志kubectl -n <ns> describe ...kubectl -n <ns> logs ... --tail=200