当前位置: 首页 > ops >正文

Kubernetes自动扩容方案

Kubernetes 自动扩容可以概括为 “三层六类”

层级类型触发维度官方/社区方案一句话说明
Pod 级HPACPU / 内存 / 自定义 / 外部指标内置副本数横向扩缩,最常用
VPACPU / 内存社区组件单 Pod 资源竖向扩缩,不改副本数
KEDA任意事件(队列、Kafka、Prometheus…)CNCF 毕业事件驱动自动扩缩,支持 Cron 计划
节点级Cluster AutoscalerPod 调度失败 / 节点资源空闲社区自动增删节点,云厂商集成最成熟
Cluster Proportional Autoscaler节点数 / CPU 核数社区系统组件随集群规模线性扩容
混合级CPA + VPA节点数 → 副本或资源社区按集群规模同步调整副本  资源

1 HPA(Horizontal Pod Autoscaler)

  • 能力:根据实时指标自动增减 Deployment / StatefulSet 副本数。

  • 指标类型

    • Resource(CPU / Memory)

    • Pods(自定义 Pod 级指标)

    • External(集群外指标,如云监控)

  • 关键字段

    • minReplicasmaxReplicas

    • behavior.scaleUp/scaleDown 限制速率、稳定窗口

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:name: web-hpa
spec:scaleTargetRef:apiVersion: apps/v1kind: Deploymentname: webminReplicas: 2maxReplicas: 10metrics:- type: Resourceresource:name: cputarget:type: UtilizationaverageUtilization: 60

2 VPA(Vertical Pod Autoscaler)

  • 作用:在 不重启 Pod重启 Pod 的情况下,自动调整容器的 requests/limits

  • 模式

    • Auto:重启 Pod 以生效

    • Recreate:立即重启

    • Off:仅推荐值

  • 使用场景:数据库、缓存等 有状态单实例 服务。


3 KEDA(Kubernetes Event-Driven Autoscaler)

  • 特点:支持 50+ 事件源(Kafka、SQS、Prometheus、Cron…)。

  • 架构:KEDA Operator + Scaler → 生成 HPA 对象。

  • 示例(Kafka 队列长度 > 1000 时扩容):

apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:name: kafka-consumer
spec:scaleTargetRef:name: consumer-deploytriggers:- type: kafkametadata:topic: orderslagThreshold: "1000"

4 Cluster Autoscaler(节点自动扩缩)

  • 触发条件

    • 扩容:Pod 因资源不足 Pending

    • 缩容:节点 CPU/内存利用率 < --scale-down-utilization-threshold(默认 50%)且持续 --scale-down-delay(默认 10 min)。

  • 云厂商集成:AWS、阿里云、GCP 均提供托管版本;自建时需:

    • 部署 CA Pod(带云凭证)

    • 配置伸缩组 ID / 标签 / 安全组


5 Cluster Proportional Autoscaler(CPA)

  • 作用:让系统组件(如 DNS、Ingress Controller)的副本数 随节点数或 CPU 核数线性变化

  • 示例(每 20 节点 1 个 CoreDNS):

apiVersion: apps/v1
kind: Deployment
metadata:name: coredns
spec:replicas: 1
---
apiVersion: autoscaling/v1
kind: ClusterProportionalAutoscaler
metadata:name: coredns-cpa
spec:scaleTargetRef:apiVersion: apps/v1kind: Deploymentname: corednscoresPerReplica: 20

6 混合场景:Cron + HPA

  • KEDA 的 Cron Scaler:在固定时间段(如 9:00–18:00)自动抬高 minReplicas,高峰后回落。

  • 无代码改动,只需在 ScaledObject 里加 trigger.type: cron


一句话总结

Pod 层用 HPA/VPA/KEDA,节点层用 Cluster Autoscaler,系统组件用 CPA;三层联动即可实现从“Pod”到“节点”的完整自动弹性。

http://www.xdnf.cn/news/16579.html

相关文章:

  • 【C语言进阶】题目练习
  • 《 java 随想录》| LeetCode链表高频考题
  • Linux文件归档和备份
  • 云原生MySQL Operator开发实战(五):扩展与生态系统集成
  • 基于Matlab图像处理的静态雨滴去除与质量评估系统
  • windows下Docker安装路径、存储路径修改
  • Docker初学者需要了解的几个知识点(三):Docker引擎与Docker Desktop
  • 实时行情接口使用教程
  • deepseek+飞书多维表格 打造小红书矩阵
  • python优秀案例:基于机器学习算法的景区旅游评论数据分析与可视化系统,技术使用django+lstm算法+朴素贝叶斯算法+echarts可视化
  • 移动端 WebView 调试实战,多平台行为差异排查与统一调试流程
  • zoho crm为什么xx是deal的关联对象但是调用函数时报错说不是关联对象
  • p5.js 三角形triangle的用法
  • 【RAG搭建Agent应用实战】基于检索增强生成(RAG)搭建特定场景Agent应用
  • Git分支
  • c++ nlohmann/json读写json文件
  • 溶解能计算
  • 【24】C# 窗体应用WinForm ——日历MonthCalendar属性、方法、实例应用
  • 电磁兼容(EMC):整改案例(十三)屏蔽外壳开孔解决433MHz无线通信问题
  • hive专题面试总结
  • c++-list
  • Elasticsearch索引设计与性能优化实战指南
  • 查询mac 安装所有python 版本
  • vscode开发微信小程序
  • 2411.按位或最大的最小子数组长度
  • 信息技术发展与区块链的崛起:深度解析与未来展望
  • 基于web的在线购物系统的设计与实现/在线商城的设计与实现
  • 【微信小程序】12、生物认证能力
  • 从字符串中“薅出”最长子串:LeetCode 340 Swift 解法全解析
  • 《使用Qt Quick从零构建AI螺丝瑕疵检测系统》——7. AI赋能(上):训练你自己的YOLOv8瑕疵检测模型