- 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
59 lines
2.4 KiB
Markdown
59 lines
2.4 KiB
Markdown
# 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`](../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`](../ansible/files/04-01-nodejs-demo/04-09-nodejs-demo.yaml) 上自行合并实验。
|
||
|
||
## 部署与验证
|
||
|
||
```bash
|
||
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
|
||
```
|
||
|
||
## 删除
|
||
|
||
```bash
|
||
kubectl delete pvc nodejs-demo-data -n default
|
||
```
|
||
|
||
(注意:是否删除底层 PV 数据取决于 reclaim 策略与驱动行为。)
|
||
|
||
## 失败排查
|
||
|
||
- **Multi-Attach error**:RWO 卷被多个 Pod 同时挂载;改 `ReadWriteMany` 存储类或单副本。
|
||
- **挂载失败**:PVC 未 Bound;StorageClass 不存在。
|
||
- `06-01-k3s-networkpolicy-故障排查.md`
|
||
|
||
## 相关文档
|
||
|
||
- [`04-03-nodejs-环境变量与配置注入.md`](04-03-nodejs-环境变量与配置注入.md)
|
||
- [`04-08-nodejs-安全上下文.md`](04-08-nodejs-安全上下文.md)
|