K8S的HorizontalPodAutoscaler
介绍 K8S 的 HorizontalPodautoscaler(HPA)用于根据实际负载,动态地调整 workload 资源的 pod 数量,比如 Deployment、StatefulSet 等。 一个实际的例子可以参考:https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/ HPA 的工作流程是: 找到目标 → 选出 Pod → 获取指标 → 求平均 → 算比例 → 推导副本数 找到目标 在 HPA 中设置 scaleTargetRef 用于找到目标对象: spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: my-app 然后读取该对象的 .spec.selector,找出所有匹配的 pod。 因此我们也可以发现,HPA 并不是直接管理 Pod,而是通过 Deployment/StatefulSet 的 selector 间接管理。 获取指标 指标有三种来源: Pod 资源指标,比如内存、CPU Pod 自定义指标,比如每个 Pod QPS 外部指标,比如某个 Ingress 的总 QPS、kafka topic lag 计算副本数 计算每个目标 pod 的指标,比如 CPU 利用率 ...