【Kubernetes】k8s集群之HPA

目录

[一、HPA 概述](#一、HPA 概述)

[二、部署 metrics-server](#二、部署 metrics-server)

[三、部署 HPA](#三、部署 HPA)

四、总结


一、HPA 概述

HPA(Horizontal Pod Autoscaling)Pod 水平自动伸缩,Kubernetes 有一个 HPA 的资源,HPA 可

以根据 CPU 利用率自动伸缩一个 Replication Controller、 Deployment 或者Replica Set 中的 Pod

数量

HPA 基于 Master 上的 kube-controller-manager 服务启动参数 --horizontal-pod-autoscaler-sync-period 定义的时长(默认为15秒),周期性的检测 Pod 的 CPU 使用率

HPA 与之前的 RC、Deployment 一样,也属于一种 Kubernetes 资源对象。通过追踪分析 RC 控制的所有目标 Pod 的负载变化情况, 来确定是否需要针对性地调整目标Pod的副本数,这是HPA的实现原理

metrics-server:集群插件组件,用于收集和聚合从每 kubelet 中提取的资源指标。API Server 提供 Metrics API 以供 HPA、VPA和 kubectl top 命令使用。Metrics Server 是 Metrics API 的参考实现

二、部署 metrics-server

复制代码
上传components.yaml文件

kubectl apply -f components.yaml

kubectl top node

三、部署 HPA

复制代码
//创建用于测试的 Pod 资源,并设置请求资源为 cpu=200m
vim hpa-pod.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    run: php-apache
  name: php-apache
spec:
  replicas: 1
  selector:
    matchLabels:
      run: php-apache
  template:
    metadata:
      labels:
        run: php-apache
    spec:
      containers:
      - image: mirrorgooglecontainers/hpa-example
        name: php-apache
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
        resources:
          requests:
            cpu: 200m
          limits:
            cpu: 500m
---
apiVersion: v1
kind: Service
metadata:
  name: php-apache
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: php-apache
	
	
kubectl apply -f hpa-pod.yaml
 
kubectl get pods

//使用 kubectl autoscale 命令创建 HPA 控制器,设置 cpu 负载阈值为请求资源的 50%,指定最少负载节点数量为 1 个,最大负载节点数量为 10 个

kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10

四、总结

HPA的工作原理:利用metrics-server组件定期的(默认为15秒)收集Pod资源的CPU或内存平均

负载情况,根据HPA资源配置的CPU或内存的requests资源量阈值百分比来动态调整Pod的副本数

量

HPA扩容时,Pod副本数量上升会比较快;缩容时,Pod副本数量下降会比较慢(默认冷却时间为

5m)

相关推荐
CCblandy1 小时前
一致性哈希到底省了多少搬迁?本机实测 3 轮:取模 6→7 搬 85.8%,V=128 只搬 14.3%,虚拟节点太少会被倾斜骗
后端·python·云原生·性能优化·架构
code_slave(码畜)1 小时前
微服务架构落地:OpenFeign 服务远程调用 + 线程池隔离架构实战 —— 超时控制、重试机制、线程池隔离,防雪崩
spring boot·spring cloud·微服务·云原生·架构·openfeign
励志师code1 小时前
Kubernetes 集群节点生命周期管理实战:从扩容、调度管控到证书续期
运维·docker·容器·kubernetes·gpu算力·kubelet
闲云自留地2 小时前
Kubernetes 安装保姆级:关 swap、装 containerd、init 集群、calico 一篇通
容器·贪心算法·kubernetes
木雷坞2 小时前
Docker Compose部署Metabase:应用库隔离与日期筛选看板
运维·docker·容器
涵美女程序猿2 小时前
ChatCut online 剪微服务熔断测试录屏:仪表盘告警、降级日志与恢复时刻怎样对应
程序人生·微服务·云原生·架构·电脑
怒放的生命19912 小时前
前端项目 Docker 打包实操指南
前端·docker·容器
tedcloud1232 小时前
Docker Compose 部署 Immich:手机照片自动备份与常见故障排查
运维·前端·docker·容器·智能手机·开源·流程图
古城小栈2 小时前
Docker Compose 云原生的底座
docker·云原生·容器
卜锦元3 小时前
Docker Compose 部署 Nginx 1.30.6 完整指南
nginx·docker·容器