k8s自动弹性伸缩之HPA实践

Kubernetes HPA(Horizontal Pod Autoscaler) 是 Kubernetes 提供的自动弹性伸缩机制,用于根据实时负载动态调整 Pod 副本数量,以应对流量波动并优化资源利用率。HPA 可以根据 CPU 利用率自动伸缩一个 Replication Controller、 Deployment 或者Replica Set 、statefulset中的 Pod 数量。

HPA是基于kube-controll-manager服务,周期性的检测Pod的CPU使用率,默认30s检测一次

HPA和副本控制器replication controller以及deployment controller,都属于K8S的资源对象。通过跟踪分析副本控制器和deployment的Pod的负载变化,针对性的调整目标Pod的副本数。

阀值:正常情况下,Pod的副本数,以及达到阀值后,Pod的扩容最大数量

Kubernetes采用request和limit两种限制类型来对资源进行分配。

   request(资源需求):即运行Pod的节点必须满足运行Pod的最基本需求才能运行Pod。
   limit(资源限额):即运行Pod期间,可能内存使用量会增加,那最多能使用多少内存,这就是资源限额。

资源类型:
        CPU 的单位是核心数,内存的单位是字节。
          一个容器申请0.5个CPU,就相当于申请1个CPU的一半,你也可以加个后缀m 表示千分之一的概念。比如说100m的CPU,100豪的CPU和0.1个CPU都是一样的。

        内存单位:
                K、M、G、T、P、E             #通常是以1000为换算标准的。
                Ki、Mi、Gi、Ti、Pi、Ei        #通常是以1024为换算标准的。

一、HPA 工作原理

  1. 指标采集

    • Metrics Server:默认采集 Pod 的 CPU 和内存使用率(需预先部署)。
    • 自定义指标:通过 Prometheus、Kubernetes Custom Metrics API 等扩展,支持 QPS、并发连接数等业务指标。
  2. 决策逻辑

    • 周期性(默认15秒)检查目标资源(如 Deployment)的指标数据。

    • 根据当前指标值与目标阈值的比例,计算期望的 Pod 副本数。

    • 计算公式:

      复制

      期望副本数 = ceil(当前副本数 × (当前指标值 / 目标指标值))
      
    • 最终副本数受 minReplicasmaxReplicas 限制。

  3. 扩缩容触发

    • 扩容:当指标超过目标阈值时增加 Pod 副本。
    • 缩容:当指标低于目标阈值时减少 Pod 副本(默认有5分钟冷却时间防止抖动)。

二、HPA 配置步骤

1. 部署 Metrics Server

Metrics Server 是 Kubernetes 内置的高效的容器资源指标来源。Metrics Server 可以帮助我们监控集群中节点和容器的资源使用情况。

# 安装 Metrics Server(Kubernetes 1.20+)
[root@master ~]# mkdir hpa
[root@master hpa]# wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.7.1/components.yaml
[root@master hpa]# vim components.yaml #修改配置文件
1、修改镜像:
registry.k8s.io/metrics-server/metrics-server:v0.7.1
修改为
registry.aliyuncs.com/google_containers/metrics-server:v0.7.1
2.禁用证书验证,在134行左右添加
spec:
      containers:
      - args:
        - --kubelet-insecure-tls  #禁用证书验证
        - --cert-dir=/tmp
        - --secure-port=10250
        
[root@master hpa]# kubectl apply -f components.yaml

# 验证安装
[root@master hpa]# kubectl get pod -A | grep metrics
kube-system  metrics-server-b59d5fcc6-jl9jh   1/1     Running   0      55s

[root@master hpa]# kubectl top nodes
NAME     CPU(cores)   CPU(%)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值