k8s高级部分-HPA自动扩展机制

1.HPA介绍

Kubernetes Horizontal Pod Autoscaler (HPA) 是 Kubernetes 提供的一种自动扩展机制,它允许用户根据预定义的指标自动调整应用的副本数量。HPA 主要用于水平扩展(增加或减少 Pod 的数量),以应对变化的工作负载需求,从而确保应用服务的高可用性和响应能力。

1.1 工作原理

HPA 控制器定期检查与之关联的 Pod 的指标,如 CPU 使用率、内存使用率或其他自定义指标。如果检测到 Pod 的平均资源使用率超过了预先设定的阈值,HPA 将自动增加 Pod 的数量,反之,则减少 Pod 的数量。这样可以确保应用在需求高峰期有足够的资源处理请求,在低谷期又不浪费资源。

1.2 主要组成部分

  • scaleTargetRef:指定要被自动扩缩容的目标对象,通常是 Deployment、ReplicaSet、StatefulSet 或者 DaemonSet。

  • minReplicasmaxReplicas:分别定义了目标对象副本数的最小值和最大值,HPA 将在这些界限内调整副本数量。

  • metrics:定义了用于触发扩缩容的监控指标,可以是资源指标(如 CPU 和内存使用率),也可以是自定义指标。

1.3 使用场景

  • 自动响应负载变化:HPA 可以自动响应流量的波动,例如在节假日或促销活动期间自动增加应用实例,而在活动结束后减少实例数。

  • 资源优化:通过自动调整副本数,HPA 可以帮助节省成本和资源,避免过度配置或资源不足的情况。

  • 高可用性:HPA 可以确保即使在单个 Pod 失效的情况下,应用仍具有足够的冗余,以维持服务的连续性。

2.使用样例

这段 YAML 文件定义了一个 HPA,它将监控名为 bm-product-service-app 的 Deployment,并基于 CPU 和内存使用率来自动调整副本数量。当平均 CPU 使用率达到 50%,或平均内存使用率达到 10% 时,HPA 将自动调整副本数量,且副本数将被限制在 1 至 10 之间。请注意,内存使用率的设置仅为示例,实际应用中应根据需求调整。

# 指定对象所属的 API 组和版本
apiVersion: autoscaling/v2

# 指定对象的种类
kind: HorizontalPodAutoscaler

# 元数据,包括对象的名称
metadata:
  name: bm-product-service-app-hpa

# HPA 的规格,定义了如何进行扩缩容
spec:
  # 指定要扩缩容的目标对象,这里是 Deployment
  scaleTargetRef:
    apiVersion: apps/v1 # 目标对象所属的 API 组和版本
    kind: Deployment # 目标对象的种类
    name: bm-product-service-app # 目标 Deployment 的名称
  behavior:
    scaleDown: 
      stabilizationWindowSeconds: 30 #如果你配置了 stabilizationWindowSeconds,HPA 会在做出扩容决策前等待指定的时间以确认系统的稳定性。即使达到阈值,HPA 也会等待这段时间再做出最终决定。
    scaleUp: 
      stabilizationWindowSeconds: 30
  # 最小副本数,HPA 不会将副本数降低到这个值以下
  minReplicas: 1

  # 最大副本数,HPA 不会将副本数增加到这个值以上
  maxReplicas: 10

  # 定义监控并用于扩缩容的指标列表
  metrics:
    # 第二个指标,基于内存使用率
    - type: Resource
      resource:
        # 监控的资源类型
        name: memory
        # 目标利用率,这里设置为 10%,意味着当平均内存使用率达到 10% 时触发扩缩容
        target:
          type: Utilization
          averageUtilization: 55


3.查看HPA状态

 kubectl get hpa   查看当前占用比例值

kubectl describe hpa bm-product-service-app-hpa   查看HPA事件

3.删除指定HPA

kubectl delete hpa bm-product-service-app-hpa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这孩子叫逆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值