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

kubernetes服务自动伸缩-HPA

实验环境

安装好k8s集群

HPA:Pod水平自动伸缩(pod副本伸缩)

VPA:Pod垂直自动伸缩(pod资源伸缩)

一、Kubernetes Pod水平自动伸缩 HPA

官方网址:Pod 水平自动扩缩 | Kubernetes

1、HPA简介

HPA全称 Horizontal Pod Autoscaler,可以基于 CPU 利用率自动扩缩 ReplicationController、Deployment 和 ReplicaSet 中的 Pod 数量。 除了 CPU 利用率,也可以基于其他应程序提供的自定义度量指标来执行自动扩缩。

Pod 自动扩缩不适用于无法扩缩的对象,比如 DaemonSet。

Pod 水平自动扩缩特性由 Kubernetes API 资源和控制器实现。资源决定了控制器的行为。

控制器会周期性的调整副本控制器或 Deployment 中的副本数量,以使得 Pod 的平均 CPU 利用率与用户所设定的目标值匹配。

HPA 定期检查内存和 CPU 等指标,自动调整 Deployment 中的副本数。

实际生产中,广泛使用这四类指标:

(1)Resource metrics - CPU和内存利用率指标

(2)Pod metrics - 例如网络利用率和流量

(3)Object metrics - 特定对象的指标,比如Ingress, 可以按每秒使用请求数来扩展容器

(4)Custom metrics - 自定义监控,比如通过定义服务响应时间,当响应时间达到一定指标时自动扩容

2、metircs-server部署

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

(1)上传high-availability-1.21+.yaml文件到/root目录(master1)

(2)上传metrics-server.tar包到/root目录并导入(master1、worker1、worker2)

docker load -i metrics-server.tar

(3)禁用 Kubelet 的 TLS 证书验证

kubelet 证书需要由集群证书颁发机构签名,或者通过向 Metrics Server 传递参数 --kubelet-insecure-tls 来禁用证书验证

vim high-availability-1.21+.yaml

添加:

        - --kubelet-insecure-tls

(4)创建资源

kubectl apply -f high-availability-1.21+.yaml

kubectl get pod -n kube-system

查看 Kubernetes 集群中节点资源使用情况(CPU 和内存)

kubectl top nodes

查看指定命名空间(kube-system)中所有 Pod 的资源使用情况(CPU 和内存)

kubectl top pod -n kube-system

3、HPA演示示例

(1)部署一个服务

mkdir hpa

cd hpa

vim 01-nginx.yaml

添加:

apiVersion: apps/v1

kind: Deployment

metadata:

  labels:

    app: nginx

  name: nginx

  namespace: default

spec:

  replicas: 2

  selector:

    matchLabels:

      app: nginx

  template:

    metadata:

      labels:

        app: nginx

    spec:

      containers:

      - name: nginx

        image: nginx:1.20

        imagePullPolicy: IfNotPresent

        resources:

          requests:

            cpu: 200m

            memory: 100Mi

---

apiVersion: v1

kind: Service

metadata:

  name: nginx

  namespace: default

spec:

  type: NodePort

  ports:

  - port: 80

    targetPort: 80

  selector:

    app: nginx

kubectl apply -f 01-nginx.yaml

kubectl get pod

(2)创建HPA对象

vim 02-nginx-hpa.yaml

添加:

apiVersion: autoscaling/v2

kind: HorizontalPodAutoscaler

metadata:

  name: nginx-hpa

  namespace: default

spec:

  scaleTargetRef:

    apiVersion: apps/v1

    kind: Deployment

    name: nginx

  minReplicas: 1

  maxReplicas: 10

  metrics:

  - type: Resource

    resource:

      name: cpu

      target:

        type: Utilization

        averageUtilization: 50

这是一个 HorizontalPodAutoscaler (HPA) 对象的配置,它将控制Deployment "nginx" 的副本数量。当 CPU 使用率超过 50% 时,HPA 将自动增加 Pod 的副本数量,最高不超过 10 个。

创建资源

kubectl apply -f 02-nginx-hpa.yaml

查看 Kubernetes 集群中所有 HorizontalPodAutoscaler(HPA)资源

kubectl get hpa

(3)执行压测

yum -y install httpd-tools

kubectl get svc

ab -c 1000 -n 1000000 http://192.168.10.11:32512/

复制会话

kubectl get pod

kubectl get hpa

返回字段解析:

NAME: HPA 的名称。

REFERENCE: HPA 管理的目标资源(如 Deployment)。

TARGETS: 当前资源使用率与目标值的对比(例如,CPU 使用率)。

MINPODS: Pod 副本数的最小值。

MAXPODS: Pod 副本数的最大值。

REPLICAS: 当前的 Pod 副本数。

AGE: HPA 的创建时间。

终止压力测试完成查看

kubectl get hpa

CPU 利用率已经降到 0,所以 HPA 将自动缩减副本数量至 1。

因为在创建HPA时,指定了副本数范围,这里是minReplicas: 1,maxReplicas: 10。

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

相关文章:

  • C++ 访问者模式详解
  • Redis面试题
  • 力扣26——删除有序数组中的重复项
  • 【推荐笔记工具】思源笔记 - 隐私优先的个人知识管理系统,支持 Markdown 排版、块级引用和双向链接
  • Qt 的原理及使用(1)——qt的背景及安装
  • 在另一个省发布抖音作品,IP属地会随之变化吗?
  • 【数据结构】1. 时间/空间复杂度
  • 2025数维杯数学建模A题完整论文模型代码:空中芭蕾
  • SpringBoot统一功能处理
  • 13.原生测试框架Unittest解决用例组织问题 与测试套件的使用
  • H5 移动端适配最佳实践落地指南。
  • 影楼精修-牙齿美型修复算法解析
  • 数据类型:List
  • robotframe启动ride.py
  • C++ Dll创建与调用 查看dll函数 MFC 单对话框应用程序(EXE 工程)改为 DLL 工程
  • C#学习——继承、封装、多态
  • 安科瑞DJSF1352-RN直流电能表的技术特点与应用
  • ZYNQ笔记(十九):VDMA VGA 输出分辨率可调
  • 各类音频放大器电路原理简析
  • MSF 生成不同的木马 msfvenom 框架命令
  • html object标签介绍(用于嵌入外部资源通用标签)(已不推荐使用deprecated,建议使用img、video、audio标签)
  • Nx与Monorepo
  • 【软件测试】测试用例的概念与常见测试的模型
  • Django ORM: values() 和 annotate() 方法详解
  • 2025-05-09 提示学习概念
  • Edu教育邮箱申请2025年5月
  • 【Lattice FPGA 开发】Diamond在线调试Reveal逻辑乱跳的解决
  • lambda 表达式
  • 摄像头模组高像素模组
  • AI模型蒸馏技术在微控制器上的内存占用与精度平衡实践