2.8 KiB
2.8 KiB
04-08-nodejs-资源请求与限制
为
nodejs-demo配置resources.requests/resources.limits,便于调度与避免单个 Pod 占满节点;为后续 HPA(04-13-nodejs-HPA.md)提供基础。
TL;DR
- 手动练习:复制本课目录
ansible/files/04-08/下清单到目标路径,按需改字段后按本文kubectl/bash 操作(学习路径可不使用 verify)。 - 自动化验收:
./ansible/bin/verify.sh run 04-08 - 关键前置:按本文「前置条件」准备环境变量/Secret/入口 IP
- 成功判据:达到本文「预期」且 playbook 断言通过
- 排障:见本文「排障」
前置条件
- 已部署
nodejs-demo(04-01)。
清单路径(本课分目录)
| 本篇完整清单 | ansible/files/04-08/04-08-nodejs-demo.yaml |
| 应用 | kubectl apply -f ansible/files/04-08/04-08-nodejs-demo.yaml |
场景说明(白话)
- requests(请求量):告诉调度器「我常态大概要多少 CPU/内存」,方便排布;CPU 类 HPA 也会用到(见
04-13)。 - limits(上限):内存超过上限,容器可能被 OOM 杀掉;CPU 超过上限会被 限流,变慢但不一定重启。
- Node 堆:还可以用
NODE_OPTIONS=--max-old-space-size=...限制 V8 堆,和容器内存 limit 配合用(见04-03)。
相对 04-07 的变更(原文 → 新文)
| 位置 | 原文(04-07) |
新文(04-08) |
|---|---|---|
containers[].resources |
(无) | requests cpu 50m / memory 64Mi;limits cpu 500m / memory 256Mi |
部署与验证
kubectl apply -f ansible/files/04-08/04-08-nodejs-demo.yaml
kubectl describe pod -l app=nodejs-demo -n default | grep -A5 "Limits\|Requests"
若集群已装 metrics-server:
kubectl top pod -l app=nodejs-demo -n default
删除限制
将 resources 整段删除或设为合理值后 kubectl apply。
失败排查
- OOMKilled:提高
limits.memory或降低 Node 堆/优化代码;kubectl describe pod看Last State。 - CPU 节流:延迟升高;调大
limits.cpu或优化热点。 06-01-k3s-networkpolicy-故障排查.md(与网络无关时仍可先排除入口问题)
相关文档
排障
- 先看 playbook 输出:失败时先定位是 deploy/wait/http_check 哪一步。
- 集群侧总览:
kubectl get nodes -o wide、kubectl -n kube-system get pods -o wide。 - 事件与日志:
kubectl -n <ns> describe ...、kubectl -n <ns> logs ... --tail=200。