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

CKA考试知识点分享(1)---HPA

CKA 版本:1.32
第一套题是涉及HPA相关。本文不是题目,只是为了学习相关知识点做的实验。
Horizontal Pod Autoscaler (HPA) 是 Kubernetes 中用于自动调整 Pod 副本数量的功能,根据 CPU、内存等指标或自定义指标动态扩展或缩容 Deployment、ReplicaSet 或 StatefulSet 中的 Pod。

1. 环境准备

需要准备一套K8S集群。

1.1 安装metrics-server

Metrics-Server 是 Kubernetes Resource Metrics API 的唯一官方实现,为 kubectl top、HPA(基于 CPU/内存扩缩容)等核心功能提供实时数据。HPA的CPU和内存指标依赖metrics-server。所以我们安装metrics-server。
下载安装yaml
https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.7.2

因为内部是自建的k8s集群,需要忽略一下证书验证 - --kubelet-insecure-tls
在这里插入图片描述
检查metrics-server 正常运行。
kubectl get pod -A |grep metrics-server
在这里插入图片描述

1.2 安装测试POD

这里测试pod 我使用官方文档中的测试实例

apiVersion: apps/v1
kind: Deployment
metadata:name: php-apache
spec:selector:matchLabels:run: php-apachetemplate:metadata:labels:run: php-apachespec:containers:- name: php-apacheimage: k8s.m.daocloud.io/hpa-exampleports:- containerPort: 80resources:limits:cpu: 500mrequests:cpu: 200m
---
apiVersion: v1
kind: Service
metadata:name: php-apachelabels:run: php-apache
spec:ports:- port: 80selector:run: php-apache

创建好了之后 验证一下
在这里插入图片描述

2. HPA 操作

2.1 创建HPA

kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10
kubectl get hpa
在这里插入图片描述

2.2 施加压力

施加压力:
在这里插入图片描述

查看hpa 状态
kubectl get hpa -w
在这里插入图片描述
明显可以看出,pod数量少的时候 pod的CPU使用率上去了,所以hpb对pod数量进行扩容。然后当pod数量提升到9个的时候,CPU使用率降到50%以下了。达到了预期。

查看pod
kubectl get pod
在这里插入图片描述
停止压力,观察hpa的行为
在这里插入图片描述

3 HPA的行为

从上面可以看到 当压力停止后,差不多5分钟左右时间 pod数量从9个降到1个,恢复到没有压力的时候。hpa进行扩缩容的时长,每次减少多少个pod, 这些都是由hpa的行为控制的,如下所示
kubectl edit hpa php-apache

  behavior:scaleDown:policies:- periodSeconds: 60type: Podsvalue: 8selectPolicy: MaxscaleUp:policies:- periodSeconds: 15type: Podsvalue: 4- periodSeconds: 15type: Percentvalue: 100selectPolicy: MaxstabilizationWindowSeconds: 0

在这里插入图片描述

上面为收缩(scaledown)和扩容(scaleup)两个方向:

收缩策略(scaleDown):每60秒最大减少8个Pod

单策略:仅使用Pods类型策略
执行频率:每60秒周期内
最大缩减量:8个Pod

扩容策略(scaleUp) 每15秒最大增长量=max(4个Pod,或者Pod数量×100%

双策略组合:
绝对值策略:每15秒最多增加4个Pod
百分比策略:每15秒最多增加当前副本数的100%
选择策略:selectPolicy: Max(取两个策略计算结果中的较大值)
立即生效:stabilizationWindowSeconds=0表示取消扩容冷却期

施加压力
在这里插入图片描述
压力上来后,很快pod就冲1个变成3个再变成7个。基本没有任何延迟。
停止压力
在这里插入图片描述
延迟时长5分钟 直接从7个变成1个。

可以看出。stabilizationWindowSeconds=0 是当扩容时没有任何延迟,直接进行扩容。

参考链接:

https://kubernetes.io/zh-cn/docs/tasks/run-application/horizontal-pod-autoscale/

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

相关文章:

  • 以智能管理为基础,楼宇自控打造建筑碳中和新路径
  • Day42 训练
  • 数据仓库建模的艺术论
  • 华为云Flexus+DeepSeek征文|华为云一键部署知识库搜索增强版Dify平台,构建智能聊天助手实战指南
  • 从标准输入直接执行 ELF 二进制文件的实用程序解析(C/C++实现)
  • ubuntu显示器未知
  • 深入理解 Agent 与 LLM 的区别:从智能体到语言模型
  • 【手动触发浏览器标签页图标自带转圈效果】
  • SQL-事务(2025.6.6-2025.6.7学习篇)
  • 如何思考?分析篇
  • 【Dv3Admin】系统视图下载中心API文件解析
  • 【Linux】Ubuntu 创建应用图标的方式汇总,deb/appimage/通用方法
  • 【HarmonyOS5】UIAbility组件生命周期详解:从创建到销毁的全景解析
  • 第3章:图数据模型与设计
  • Linux Gnome壁纸
  • 数据导入技术(文档加载)
  • Python 基础知识入门
  • Web设计之登录网页源码分享,PHP数据库连接,可一键运行!
  • linux安装组件
  • code-server安装使用,并配置frp反射域名访问
  • 基于Java Swing的固定资产管理系统设计与实现:附完整源码与论文
  • 7 天六级英语翻译与写作冲刺计划
  • 【Dv3Admin】系统视图字典管理API文件解析
  • MySQL:Cannot remove all partitions, use DROP TABLE instead
  • C++ 变量和基本类型
  • 意识上传伦理前夜:我们是否在创造数字奴隶?
  • KVC与KVO
  • Scade 语言概念 - 方程(equation)
  • DenseNet算法 实现乳腺癌识别
  • 游戏(game)