Files
2026-03-29 09:08:01 +08:00

3.2 KiB
Raw Permalink Blame History

04-13-nodejs-HPA

nodejs-demo 配置 HorizontalPodAutoscaler,按 CPU/内存等指标在 minReplicasmaxReplicas 间自动伸缩。

TL;DR

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

前置条件

清单路径(本课分目录)

| 本篇完整清单(含 Deployment/Service/Ingress/PVC/CM + HPA | ansible/files/04-13/04-13-nodejs-demo.yaml | | 应用 | kubectl apply -f ansible/files/04-13/04-13-nodejs-demo.yaml(若用 04-12,需先有 TLS Secret |

场景说明(白话)

  • HPA:根据 CPU/内存等指标,自动加减 Pod 个数(在 minReplicasmaxReplicas 之间)。
  • 为什么要配 requests否则集群算不出「利用率百分比」CPU 型 HPA 往往不工作

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

位置 原文(04-12 新文(04-13
资源 无 HPA 新增 HorizontalPodAutoscaler nodejs-demoCPU 目标利用率 50%minReplicas: 1maxReplicas: 5

部署与验证

kubectl apply -f ansible/files/04-13/04-13-nodejs-demo.yaml
kubectl get hpa -n default
kubectl describe hpa nodejs-demo -n default

加压 Pod例如在集群内对 Service 做短时压测)后观察 REPLICAS 是否上升;降压后是否回落(受 --default-downscale-stabilization 等控制器参数影响,可能有延迟)。

删除 HPA

kubectl delete hpa nodejs-demo -n default

失败排查

  • unknown / missing metricsmetrics-server 未运行Pod 无 resources.requests
  • 不扩容:当前利用率未达阈值;或 maxReplicas 已达上限。
  • 频繁抖动:调高目标利用率或配置 behaviorscaleDown/scaleUp stabilizationWindow
  • 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