metrics server必须部署且就绪后hpa才能工作;grok deployment需声明resources.requests;hpa支持cpu利用率或prometheus qps指标扩缩;验证需检查状态、压测观察扩容、停压后确认缩容。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

确认Kubernetes集群已启用Metrics Server
HPA依赖实时指标数据,而Kubernetes 1.8+默认不再集成Heapster,必须先部署Metrics Server才能让HPA正常工作。
执行 kubectl top nodes 查看是否返回节点CPU/内存使用率;若提示 error: Metrics API not available,说明尚未部署。
运行 kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.7.2/components.yaml 安装最新稳定版Metrics Server。
【必须等待Metrics Server Pod处于Running状态且READY为1/1,否则后续HPA将始终显示unknown状态】
为Grok服务创建Deployment并设置资源请求
弹性伸缩的前提是Pod明确声明资源需求,否则HPA无法计算利用率百分比。
编写grok-deployment.yaml,关键字段必须包含 resources.requests.cpu 和 resources.requests.memory,例如设为 100m 和 256Mi。
直接应用: kubectl apply -f grok-deployment.yaml。
注意:若跳过 requests 设置,HPA会报错 missing request for cpu 并拒绝生效。
创建HorizontalPodAutoscaler对象控制副本数
HPA对象需精准绑定到Deployment,且目标指标必须与实际采集能力匹配。
方法一:基于CPU使用率自动扩缩
创建hpa-cpu.yaml,内容如下:
apiVersion: autoscaling/v2kind: HorizontalPodAutoscalermetadata: name: grok-hpa-cpuspec: scaleTargetRef: kind: Deployment name: grok minReplicas: 2 maxReplicas: 8 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 70
执行 kubectl apply -f hpa-cpu.yaml 启用CPU驱动的弹性伸缩。
方法二:基于自定义QPS指标(需提前部署Prometheus+KEDA)
若Grok服务已暴露 /metrics 端点且包含 http_requests_total 计数器,可改用KEDA触发伸缩。
编写scaledobject.yaml,指定 triggers.type: prometheus 并配置查询语句 sum(rate(http_requests_total[2m]))。
运行 kubectl apply -f scaledobject.yaml 即可激活事件驱动型扩缩容。
验证HPA是否按预期工作
第一步:查看HPA当前状态
kubectl get hpa → 检查 CURRENT REPLICAS 是否与 DESIRED REPLICAS 一致,TARGET 列应显示类似 70%/70% 的健康值。
第二步:模拟负载并观察响应
在另一终端持续压测: while true; do curl http://grok-service.default.svc.cluster.local/health; sleep 0.1; done。
等待约60秒后执行 kubectl get pods -w → 当前Pod数应逐步从2个增至4个甚至更多。
第三步:停止压测,等待5分钟
HPA默认缩容冷却期为5分钟,期间 kubectl get hpa 的 CURRENT VALUE 会持续下降,最终副本数回落至 minReplicas 设定值。








