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

k8s HPA

水平自动扩容和缩容HPA

HPA全称Horizontal Pod Autoscaler,即pod水平自动伸缩。HPA可以基于CPU利用率对replication controller、deployment和replicaset中的pod数量进行自动扩缩容(除了CPU利用率,也可以基于其他应用程序提供的度量指标custom metrics进行自动扩缩容)。

pod自动缩放不适用于无法缩放的对象,比如daemonsets。

HPA由kubernetes api资源和控制器实现。资源决定了控制器的行为。控制器辉周期性的获取目标资源指标,并于目标值比较后来调整pod副本数量。

创建测试Deployment
vi php-apache.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: php-apache
spec:
  selector:
    matchLabels:
      run: php-apache
  replicas: 1
  template:
    metadata:
      labels:
        run: php-apache
    spec:
      containers:
      - name: php-apache
        image: aminglinux/hpa-example
        ports:
        - containerPort: 80
        resources:
          limits:
            cpu: 500m  ##限制Pod CPU资源最多使用500m
          requests:
            cpu: 200m  ##K8s要保证Pod使用的最小cpu资源为200m
---
apiVersion: v1
kind: Service
metadata:
  name: php-apache
  labels:
    run: php-apache
spec:
  ports:
  - port: 80
  selector:
    run: php-apache

安装merics-server(通过它才能获取到具体的资源使用情况)
下载yaml文件

wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability-1.21+.yaml

修改YAML文件
vi high-availability-1.21+.yaml
将image: k8s.gcr.io/metrics-server/metrics-server:v0.6.2 修改为 image: aminglinux/metrics-server:v0.6.2 
在image: 这行上面增加一行: - --kubelet-insecure-tls

创建HPA
vi  hpa-php-apache.yaml

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: php-apache
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: php-apache
  minReplicas: 1  ##最小Pod数为1
  maxReplicas: 10  ##最大Pod数为10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50  ##当Pod的CPU使用率超过50%时,需要自动扩容

模拟负载变动,查看扩缩容

再开一个终端,执行
kubectl run -i --tty load-generator --rm --image=busybox:1.28 --restart=Never -- /bin/sh -c "while sleep 0.01;do wget -q -O- http://php-apache;done"

回到原终端查看HAP和po

kubectl get deployment,po,hpa|grep -E 'NAME|php-apache'
#php-apache pod副本会逐渐增加,hpa的tagets列cpu使用率会越来越高,当超50%就会生成新pod副本

http://www.kler.cn/a/299061.html

相关文章:

  • 线性代数期末总复习的点点滴滴(1)
  • Word图片嵌入格式不正确的解决办法
  • Tekscan压力分布测量系统:电池安全与质量提升的保障
  • 基于Spring Boot的智慧农业专家远程指导系统
  • 搜索召回概要
  • 机动车油耗计算API集成指南
  • 进程查看和计划任务
  • web渗透:RCE漏洞
  • k8s防火墙networkPolicy,的核心是“自己”
  • 苹果首款AI手机发布!iPhone 16全新AI功能体验感拉满
  • Unity报错:error CS8805: Program using top-level statements must be an executable.
  • Guitar Pro 8.2中文解锁版下载及2024最新图文安装教程
  • (Java企业 / 公司项目)点赞业务系统设计与完成
  • 智能优化算法-樽海鞘优化算法(SSA)(附源码)
  • Qt绘图之平移、旋转、缩放
  • Flex布局最后一行元素的对齐的解决方案
  • 《华为 eNSP 模拟器安装教程》
  • Spring Boot详解
  • 组织应在其网络安全策略中考虑MLSecOps吗?
  • LCR 021
  • SpringBoot2:请求处理原理分析-接口方法的返回值处理(returnValueHandlers)
  • Redis 入门 - 五大基础类型及其指令学习
  • 【安卓13 源码】Input子系统(3) - EventHub增加设备的流程
  • C++ | Leetcode C++题解之第398题随机数索引
  • excel无法保存文件
  • 速盾:普通cdn和高防cdn差别在哪里?