<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>HPA :: Ay Docs</title>
    <link>https://ops.docs.72602.space/using/k8s/hpa/index.html</link>
    <description>HPA（Horizontal Pod Autoscaler）是 Kubernetes 中实现自动水平扩缩容的核心组件。它的实现涉及多个 Kubernetes 组件和复杂的控制逻辑。&#xA;一、HPA 架构组成 1. 核心组件 ┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐ │ HPA Controller │ ◄──│ Metrics API │ ◄──│ Metrics Server │ │ (kube-controller)│ │ (聚合层) │ │ (cAdvisor) │ └─────────────────┘ └──────────────────┘ └─────────────────┘ │ │ │ ▼ ▼ ▼ ┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐ │ Deployment/ │ │ Custom Metrics │ │ External │ │ StatefulSet │ │ Adapter │ │ Metrics │ └─────────────────┘ └──────────────────┘ └─────────────────┘ 二、HPA 工作流程 1. 完整的控制循环 // 简化的 HPA 控制逻辑 for { // 1. 获取 HPA 对象 hpa := client.AutoscalingV2().HorizontalPodAutoscalers(namespace).Get(name) // 2. 获取缩放目标（Deployment/StatefulSet等） scaleTarget := hpa.Spec.ScaleTargetRef target := client.AppsV1().Deployments(namespace).Get(scaleTarget.Name) // 3. 查询指标 metrics := []autoscalingv2.MetricStatus{} for _, metricSpec := range hpa.Spec.Metrics { metricValue := getMetricValue(metricSpec, target) metrics = append(metrics, metricValue) } // 4. 计算期望副本数 desiredReplicas := calculateDesiredReplicas(hpa, metrics, currentReplicas) // 5. 执行缩放 if desiredReplicas != currentReplicas { scaleTarget.Spec.Replicas = &amp;desiredReplicas client.AppsV1().Deployments(namespace).UpdateScale(scaleTarget.Name, scaleTarget) } time.Sleep(15 * time.Second) // 默认扫描间隔 } 2. 详细步骤分解 步骤 1：指标收集</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate></lastBuildDate>
    <atom:link href="https://ops.docs.72602.space/using/k8s/hpa/index.xml" rel="self" type="application/rss+xml" />
  </channel>
</rss>