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

案例设计:使用stress工具模拟压力的自动伸缩

这个案例的思路非常简单:

  1. 部署一个应用:这个应用有一个特点,就是可以人为地控制它消耗多少 CPU。
  2. 配置自动伸缩策略:告诉 Kubernetes,当这个应用的 CPU 使用率超过 50% 时,就增加副本数量;当使用率降下来时,就减少副本数量。
  3. 制造压力:我们手动给这个应用制造 CPU 压力,模拟线上流量暴增的场景。
  4. 观察效果:实时观察 Pod 数量的变化,直观地看到自动伸缩在起作用。

案例设计:使用 stress 工具模拟压力的自动伸缩

我们将部署一个包含 stress 命令行工具的容器,然后通过 Horizontal Pod Autoscaler 来管理它的副本数。

第一步:部署测试应用

创建一个名为 hpa-demo.yaml 的部署文件。

apiVersion: apps/v1
kind: Deployment
metadata:name: hpa-stress-demo
spec:selector:matchLabels:app: hpa-stress-demotemplate:metadata:labels:app: hpa-stress-demospec:containers:- name: stress-containerimage: polinux/stress # 一个包含 stress 工具的小型镜像resources:requests:cpu: 100m   # 重要!每个 Pod 请求 0.1 核 CPUmemory: 64Milimits:cpu: 200m   # 限制最大使用 0.2 核 CPUmemory: 128Micommand: ["stress"] # 启动时不带参数,默认不产生压力args: ["--vm", "1", "--vm-bytes", "64M", "--vm-hang", "0"]# 上面的参数是占位符,我们稍后会通过 exec 进入容器手动执行 stress 命令

应用这个部署:

kubectl apply -f hpa-demo.yaml
第二步:创建 Horizontal Pod Autoscaler

现在,我们为这个部署创建 HPA 策略。目标 CPU 利用率设置为 50%,最小副本数为 1,最大副本数为 5

kubectl autoscale deployment hpa-stress-demo --cpu-percent=50 --min=1 --max=5

验证 HPA 创建成功:

kubectl get hpa

你应该能看到类似下面的输出,初始的 CPU 使用率通常是 <unknown> 或很低。

NAME              REFERENCE                    TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
hpa-stress-demo   Deployment/hpa-stress-demo   0%/50%    1         5         1          30s
第三步:开启终端观察(非常重要!)

为了直观地看到 Pod 数量的变化,我们需要在一个单独的终端窗口实时观察。

打开一个新的终端,执行以下命令:

# 观察 HPA 状态的变化
watch kubectl get hpa# 或者,直接观察 Pod 数量的变化,这个更直观
watch kubectl get pods -l app=hpa-stress-demo

现在,这个窗口会每两秒刷新一次,让你能实时看到变化。

第四步:制造 CPU 压力(核心步骤)

现在回到原来的终端,我们开始给应用制造压力。

  1. 首先,获取正在运行的 Pod 名称:

    kubectl get pods -l app=hpa-stress-demo
    

    输出类似:hpa-stress-demo-7cbbd6f6d8-abcde

  2. 进入这个 Pod 的容器内部:

    kubectl exec -it <你的-pod-名称> -- /bin/sh
    

    例如:kubectl exec -it hpa-stress-demo-7cbbd6f6d8-abcde -- /bin/sh

  3. 在容器内部,使用 stress 工具制造 CPU 压力:
    我们启动两个 worker (--cpu 2) 来全力占用 CPU。

    stress --cpu 2 --timeout 600s
    

    这个命令会启动 2 个进程,持续计算 600 秒(10分钟),足够我们观察效果。

第五步:观察自动伸缩的奇迹

现在,请立刻将注意力转移到你刚才打开的 观察终端

你将看到如下过程:

  1. 几十秒后:HPA 收集到最新的 CPU 指标。你会发现 TARGETS0% 猛增到 200% 以上(因为我们用 2 个进程去压一个只请求了 0.1 核的 Pod,使用率很容易超过 100%)。

    NAME              REFERENCE                    TARGETS    MINPODS   MAXPODS   REPLICAS   AGE
    hpa-stress-demo   Deployment/hpa-stress-demo   225%/50%   1         5         1          2m
    
  2. 再过一分钟左右:Kubernetes 开始行动了!你会发现 REPLICAS 数量开始增加,从 1 变成 2,然后变成 3,最终可能会达到最大值 5。

    NAME              REFERENCE                    TARGETS    MINPODS   MAXPODS   REPLICAS   AGE
    hpa-stress-demo   Deployment/hpa-stress-demo   115%/50%   1         5         4          4m
    

    同时,在观察 Pod 的窗口,你会看到新的 Pod 被不断地创建出来,状态从 Pending 变为 ContainerCreating,最后变为 Running

第六步:停止压力,观察收缩

为了看到完整的伸缩循环,我们现在停止制造压力。

  1. stress 命令运行的终端,按 Ctrl + C 停止压力进程。或者直接退出容器(输入 exit)。
  2. 再次回到 观察终端

你将看到:

  • CPU 使用率 TARGETS 会迅速下降到 0% 左右。
  • 等待大约 5分钟(默认的缩容冷却时间),Kubernetes 会开始逐步减少副本数量,从 5 -> 4 -> 3 … 最终回到最小值 1。

清理资源

实验结束后,记得清理创建的资源:

kubectl delete deployment hpa-stress-demo
kubectl delete hpa hpa-stress-demo
# 或者直接删除文件
kubectl delete -f hpa-demo.yaml

总结

通过这个案例,你直观地体验了 Kubernetes HPA 的完整工作流程:

  • 监控:HPA 通过 Metrics Server 持续监控 Pod 的 CPU 使用率。
  • 判断:将实时使用率与你设定的目标值(50%)进行比较。
  • 执行:通过调整 Deployment 的 replicas 字段,实现 Pod 的自动扩缩。
  • 冷却机制:扩容是立即的,但缩容会有延迟,以防止副本数量抖动。

这个案例是理解自动伸缩原理的最佳入门方式。在实际生产环境中,你可以将其替换为任何真正的业务应用,并根据内存、自定义指标甚至外部指标(如 QPS)来进行自动伸缩。

http://www.dtcms.com/a/555305.html

相关文章:

  • 嘉兴自助建网站3d在线设计网站
  • 免费做图表的网站网站建设中服务器搭建方式
  • 滨州论坛网站建设开封建设局网站
  • 网站布局方案dedecms中英文网站开发
  • 山东高端网站建设方案微信导航网站 dedecms
  • 股票交易网站建设网站制作公司服务
  • 全球首个AI Agent操作系统发布,FlowithOS凭什么跑分超越OpenAI Atlas?
  • 钉钉网站建设服务协议北京app制作哪家好
  • 沈阳免费自助建站模板网站设计流程大致分为几个阶段
  • 响应式网站建设特征抖音搜索seo代理
  • 鞍山 网站建设泰安市住房建设局网站
  • wordpress写的网站广告设计公司深圳营销策划公司
  • 简单个人网站做网站需要一些什么东西
  • 【StarRocks】-- 4.x 与 3.x 版本对比分析
  • 做网站用什么比较好怎么修改网站排版
  • 如何做论文网站ui设计是什么含义
  • 邢台做网站建设公司哪家好?30岁学编程还能找到工作吗
  • 中国建设工程监理协会网站公司网上注册系统
  • 泰安市住房和城乡建设局网站怒江网站制作
  • 什么是重组蛋白?
  • 兰州企业网站优化南宁网站seo
  • Elastic AI agent builder 介绍(二)
  • 汕头企业网站建站模板推荐佛山伦教网站设计
  • 买机箱网站个人博客网站设计模板
  • 大庆做网站比较好的公司任务发布平台
  • 网站管理工作流程wordpress 背景插件
  • 模板网站会员wordpress 模板 学校
  • 研究生网站 建设 需求wordpress制作教程
  • 天长做网站公司花瓣网 素材 图库
  • qData数据中台【商业版】v1.1.10 全新发布:多源数据集成全面升级,清洗规则体系再进化!