逐层优化!网安独角兽如何在 AWS 上削减 60% 的 K8s 成本

【信息科学与工程学】【管理科学】第七十二篇 管理层相对基层员工的信息差/资源差/权力差/认知差03 总裁/副总裁 定义系统状态(如:全正常、1个单元故障、降级运行、完全故障),状态间转移率 λ(故障率)和 μ(修复率)构成转移强度矩阵 Q。其中 γ_k = (2π/λ) n_k d_k cosθ_k 为相位厚度,η_k = n_k / cosθ_k (TE波) 或 η_k = n_k cosθ_k (TM波) 为光学导纳,θ_k为层内入射角。用于在光刻机设计阶段评估各子系统(光源、光学、工件台、真空等)的可靠性,识别薄弱环节,计算系统整体可用性(Availability),指导冗余设计和维护策略制定。 阅读详情

本文由网络安全独角兽 Orca Security 的 FinOps 工程师 Ilay Simon 撰写,介绍了他们如何一步一步通过减少闲置资源来削减 Kubernetes 成本。

背景

Kubernetes 是一个强大的工作负载编排平台,但成本管理往往是一大挑战。当我们首次分析 AWS Kubernetes 运行环境时,发现了一个重大的低效问题:

EC2 计算资源的闲置率 vs. 实际计算利用率比值接近 50:50

换句话说,我们一半的资源处于闲置状态,造成了大量的浪费。

1. 节点级闲置(Node-Level Idle)

节点级闲置指的是节点内未分配的资源——即 CPU 和内存虽然已被配置,但 Pod 并未真正使用。

这种情况通常是由于 Kubernetes 在调度工作负载时受到约束条件和优先级的影响,可能会导致某些资源没有被充分利用(例如,当工作负载未完全使用节点的容量时)。

这种资源配置不均会导致节点上存在大量未被使用的容量,但企业仍然需要为整个实例支付费用,从而造成成本浪费。

2. Pod 级闲置(Pod-Level Idle)

Pod 级闲置指的是 Pod 请求的 CPU 或内存超过其实际消耗。这可能是由于过度配置或资源请求和限制设置过于保守。

为了避免资源不足,Pod 可能会请求比所需更多的 CPU 和内存。这些未被实际使用的资源仍然被 Pod 占用,无法被其他工作负载使用,从而导致计算资源的浪费。

这些“闲置”资源仍然被保留以备 Pod 的潜在需求,它们虽然未被使用过,实际上仍然浪费了算力。

我们采取的技术措施

在这里插入图片描述

闲置成本降低

为了应对这些问题,我们利用了 Finout 和 Grafana 监控并可视化资源使用情况。

经过深入分析,我们制定了一套多层优化策略,以更有效地降低资源浪费。具体如下:

1. Pod 级闲置优化:

采用自动化资源调整工具,动态优化 Pod 的 CPU 和内存请求,使其仅请求实际需要的资源,从而在减少资源浪费的同时提高利用率。

2. 节点级闲置优化:

我们利用 Karpenter 来动态优化节点选择,Karpenter 是一款开源的 Kubernetes 集群自动扩缩容工具,专为优化 Kubernetes 集群的工作负载设计,旨在以灵活、高性能和简洁的方式实现节点的弹性扩展。

  • 通过自定义配置,我们调整了实例系列,使其符合工作负载的 CPU:内存比(1:8)。
  • 在此基础上,我们选择了 R 系列实例,因为它们在计算能力和内存需求之间提供了最佳平衡。

这套策略使我们能够使用更少但更匹配的节点,大幅减少未配置的资源,并最大限度地减少闲置节点数量。

CloudPilot AI (www.cloudpilot.ai) 对节点选择功能进行智能化升级。在选取实例的过程中,除了价格因素外,还将网络带宽、磁盘 I/O、芯片类型等因素纳入考虑范围内,通过智能算法选出兼顾成本和性能的实例类型,以减少资源浪费,增强应用稳定性。

目前,CloudPilot AI (www.cloudpilot.ai) 提供30天免费试用,欢迎点击官网进行尝鲜!

在这里插入图片描述在这里插入图片描述

R 系列实例 CPU :内存比

3. Graviton 实例

我们评估并迁移了部分工作负载至基于 AWS Graviton 的实例。

Graviton 实例具有更高的性价比,在不影响吞吐量的情况下,帮助我们成功节省了 40% 的 EC2 计算成本。

在这里插入图片描述

按物理处理器分类的 EC2 实例

4. 应用层优化(Application-Level Optimization)

到目前为止,你可能已经熟悉了优化工作负载的常见方法,这些方法在某些情况下确实有效,但对于我们最具挑战性的系统来说,它们远远不够。

当然,我们在部分工作负载上成功节省了成本,但对于那些更棘手的场景,我们需要额外的优化手段。

这时,跳出传统思维模式就变得至关重要:

先回顾一下,我们为了优化工作负载做了些什么。首先,我们使用了自动化工具,它可以基于我们的资源使用模式动态调整 CPU 和内存请求。另外,我们采用了 Karpenter,并将部分工作负载迁移至 Graviton 实例。至此,Pod 层级的优化工作已经完成,现在,开始进行应用层级的优化。

为了解决这个问题,我们自主开发了一套定制化解决方案,专门针对应用层(Application Layer) 进行优化。

我们引入了一种分层管理系统(Tiered System),采用 “T-shirt Sizing”模型,将工作负载划分为不同的资源等级:

  • workload_x-small(超小型)
  • workload_x-medium(中型)
  • workload_x-large(大型)

这一策略确保每个工作负载都能获得刚好匹配的资源,避免过度配置和资源浪费,从而实现更高效的计算成本管理。

这个方法虽然简单却非常高效,带来了巨大的改变。每个应用现在都能精准获取所需的资源——不多,也不少。

没有资源浪费,也没有过度配置,而是更智能、更高效的资源分配方式。对我们而言,这是一种颠覆性的改变。

📌NOTE:
在进行这些优化的同时,我们还努力确保从 AWS 的折扣定价选项中受益,尽可能采用 Spot 实例,并通过 Savings Plans 覆盖剩余的工作负载。
最终,90% 以上的 EC2 资源通过采用 Spot 实例或 Savings Plans 运行,进一步降低了成本。

最终结果

当前闲置 vs 周闲置视图

当前闲置 vs 周闲置视图

我们可以看到,我们将 EC2 计算 vs. 闲置比从 50:50 优化至 25:75(大幅减少闲置资源)

在这里插入图片描述

Kubernetes 主集群 CPU 请求 vs 可分配 CPU

从截图中可以看到,CPU 请求与可分配 CPU 之间的差距显著缩小,CPU 请求量(绿色线)基本保持不变,但可分配 CPU 显著减少,这表明资源利用率得到了大幅优化。

如果你正在寻找降低 Kubernetes 成本的最佳实践,关注「 CloudPilot AI」,我们将持续带来各企业成本优化的优秀实践案例💡

推荐阅读

弹性工具选Karpenter还是Cluster Autoscaler?看这篇就知道啦!

劲省85%云成本!在K8s上使用Karpenter私有部署DeepSeek-R1

机器学习推理成本减少45%!Ray+Karpenter 在科技初创公司的落地实践

NVIDIA显卡在Linux下的功率限制问题:RTX 3060 Laptop的解决方案与避坑指南 本文针对NVIDIA RTX 3060 Laptop显卡在Linux系统下遭遇功率限制的问题,提供了详细的诊断与解决方案。通过使用nvidia-smi工具监控显卡状态,并重点介绍了通过升级驱动、启用nvidia-powerd服务来激活Dynamic Boost 2.0功能,从而安全、智能地解锁额外显卡功率,有效提升性能。 阅读详情

相关推荐

香橙派OPi 6系列选型指南:RK3588与RK3588S开发板深度对比

开发板选型是嵌入式系统设计的关键环节,尤其在边缘计算和AI推理等场景中,芯片的差异直接影响硬件架构。瑞芯微RK3588及其精简版RK3588S是当前高端开发板的核心方案,两者在PCIe通道、显示输出和SATA支持上存在显著区别。理解这些原理,有助于工程师根据项目需求快速匹配产品。香橙派OPi 6系列基于这两款芯片,衍生出OPi 6、OPi 6 Pro与OPi 6 Max三种形态:紧凑型适合嵌入式门禁与AI盒子,Pro版凭借双屏异显和PCIe 3.0满足收银机与视频分析,Max的双2.5G网口和大内存则面向轻

weixin_29185167的博客 228

KCD演讲回顾|高效 AI 基础设施:业务灵活弹性+云端 GPU 瞬时供应

如何在公有云中结合 KServe 和 Karpenter,打造高性价比的企业级 AI 推理工作负载。

cloudpilot_ai的博客 486

支付漏洞防护绕过的一种方式

放完包后就到了提交订单的地方,可以发现,金额确实小了很多,合理的搭配的话还可以更低,再次前进可以发现,金额确实是这么多,后面就不支付了,到此就结束了。也就是说数量可以为负数,但是金额不能为0或者0以下,有什么方法可以绕过这个限制吗,其实并不难,既然可以为负数,只是对金额不能为0或者负数做了限制。我们可以尝试拼接法,利用负数加上正数让他的值变得很低,但是又大于0就可以了,这里利用购物车的结算方法,随机加一些在购物车里。这里为了方便查看数据包,我这边商品的数量选择3,点击立即购买并抓包。

2301_80115097的博客 1529

跨境业务选AWS区域避坑指南:美东、美西、新加坡、东京怎么选?

对于跨境电商、SaaS、游戏、独立站以及海外 API 服务来说,AWS 区域并不是“哪里便宜就选哪里”。区域选错了,可能会直接影响访问速度、数据合规、可用服务、跨区域网络费用,甚至影响后续的容灾和扩容。us-east-1us-west-2下面会从用户分布、网络体验、服务覆盖、成本和架构规划几个方面,具体看看 AWS 美东、美西、新加坡和东京之间有什么差别,以及跨境业务到底该怎么选。

Zhang285732的博客 334

CentOS7 编译升级GCC至9.3.0

1)下载GCC9.2.0源码并解压 从GCC官方FTP下载地址可以看到GCC最新版本为9.3.0。由于官网下载速度慢,实际上用清华大学的镜像站进行下载,代码如下: wget -c /opt/tmp/ https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-9.3.0/gcc-9.3.0.tar.gz #考虑到安装失败的可能性,创建一个临时文件夹来安装GCC...

haha123486的博客 1万+

Open5GS实战指南:Ubuntu 22.04环境下的5G核心网快速部署

本文提供Open5GS在Ubuntu 22.04环境下部署5G核心网的实战指南,涵盖环境准备、MongoDB配置、核心组件安装、WebUI部署及网络调优等关键步骤。通过详细的安装教程和常见问题解决方案,帮助开发者快速搭建开源5G核心网测试环境。

weixin_29202213的博客 538

AWS亚马逊云服务代理商:WAF防CC怎么部署?CloudFront与源站防护架构解析

AWS WAF结合CloudFront可有效防御CC攻击,但需确保所有访问路径均经防护。关键在于:1)仅关联CloudFront的WAF无法覆盖直接访问源站的请求;2)应通过限速规则精准保护登录、搜索等动态接口,避免误伤正常用户;3)配合ALB访问控制或私有源站,阻断绕行路径。部署后需监控日志与业务负载,持续优化规则,实现安全与可用性平衡。

2601_96000280的博客 218

Ubuntu中交叉编译armadillo库

网上关于交叉编译armdillo库比较少,借鉴了一些但是在前几天编译时总是磕磕绊绊,于是写一个详细的编译过程。交叉编译armdillo库包含两个步骤:交叉编译依赖库和交叉编译armdillo库。

weixin_39813867的博客 1879

〖全球化架构 01〗跨国多云容灾:AWS 与阿里云双活架构下的数据同步与流量调度

跨国物流系统需采用多云双活架构以应对云区域故障与数据合规风险。通过GSLB结合业务级健康检查与权重灰度路由,实现流量智能调度;数据同步按冲突类型分类处理:状态机保障单向写,版本号或CRDT解决并发写,强一致数据归一主区;关键在于定期容灾演练,避免配置漂移导致切换失败。无演练的双活等于虚设。

Eyf • 半字节的博客 336

基于Cohesive单元的二维水力压裂(二)

部件 2D-deformabel-shell 尺寸100 矩形工具(-20,-20)(20,20) 刨分:预知cohesive单元&定位注液点位置,定义全局网格尺寸0.2 X方向采用过渡网格,向中间加密。指定网格类型:CPE4P,指定单元类型,COH2D4P,粘性正则化系数:0.0001 材料属性 材料1 弹性模量10e9,泊松比0.25,渗透率1e-7,孔隙比0.1,液体比重...

s0302017的博客 1599

SpringBoot实战教程-springboot概论

Spring Boot 是一个快速开发框架,能够快速的整合第三方框架,简化XML配置,全部采用注解形式,以及自动配置。内置web容器,帮助开发者能够实现快速开发,简化了应用系统的初始搭建以及开发过程。

鸟哥哥的专栏 4155

亚马逊AWS 推出开源的机器人物理人工智能工具链

亚马逊AWS 推出开源的机器人物理人工智能工具链

weixin_50084948的博客 176

图神经网络学习笔记-点云数据处理(专题七)

本教程解释了如何利用图神经网络(Graph Neural Networks,GNNs)来处理和训练点云数据。尽管点云默认情况下不具有图结构,但我们可以利用 PyG 的转换工具,将其转化为适合 PyG 所提供的全套 GNN 模型的形式。关键思想是从点云数据中创建一个,通过 GNN 的消息传递机制,从中学习有意义的局部几何结构。这些点的表示可以被用于例如点云分类或分割等任务。

351

K8s弹性伸缩完整实战:HPA内置指标 + Prometheus自定义指标 + VPA垂直伸缩

Kubernetes弹性伸缩是生产环境保障服务稳定性、节约集群资源的核心能力。本文完整带你实操HPA基于CPU内存扩缩容、基于Prometheus QPS自定义指标实现伸缩,同时讲解VPA垂直Pod自动伸缩四种工作模式、部署踩坑与完整实验案例,理清水平扩容和垂直扩容适用业务场景。

Adhjhfes的博客 223

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

综合实践-K8S 部署 LNMP 架构 ECShop

在 K8s 中部署 LNMP 架构 ECShop 商城。部署 NFS 服务器,提供共享目录 /ecshop部署 NFS 动态卷制备,存储类型 ecshop创建命名空间存储卷的命名空间部署RBAC权限部署 NFS Provisioner 应用部署 NFS StorageClass商城相关资源部署在 ecshop 命名空间后续使用ecshop用户管理 ecshop 命名空间中资源。配置 ingress 规则,通过 https://shop.laoma.cloud 访问商城。

fb_12345的博客 179

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

k8s -- 拉取镜像nginx

Pulling image "docker.1ms.run/library/nginx:alpine" 是拉取镜像的日志。IP: 10.244.0.70 这个是这个pod的访问ip。Type Status 下面的状态是pod的启动情况。10.244.0.70:80 这个地址只有集群内部的机器可以访问,但是外部访问是不行的。192.168.129.136是这个k8s节点的ip,31128是映射的端口。需要用 service 功能来做端口映射。

DGH2430284817的博客 140

KubeSphere 容器云实践:从管理 K8s 到建设企业 PaaS,还需要哪些能力

安装KubeSphere后,怎样继续建设企业PaaS?结合RuoYi Office真实微服务环境,从工作负载管理、项目与权限、Jenkins发布、独立监控到运维目录,核对已经可用的能力和待补的交付契约,给出可复核的配置、权限检查与平台演进方法。

RuoYi Office是基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue3 + Vben Admin + Uniapp 构建的中小企业全业务办公一体化平台,涵盖OA 协同 360

K8s 配置风险评审:从问题清单到修改对照

Kubernetes 工作负载配置检查完成后,整改评审还需要解决三件事:定位具体对象、解释风险是否适用、确认建议修改与当前配置的差异。只有风险清单,很难直接判断变更影响。

chrsh44e的博客 174

K8s 健康检查三大探针:存活、就绪、启动探针配置与排错实战

对于多副本应用, 当执行Scale Up操作时, 新副本会作为backend被添加到Service的负载均衡中, 与已有副本一起处理客户的请求。因为新副本本身没有异常退出, 默认的Health Check机制会认为容器已经就绪, 进而会逐步用新副本替换现有副本, 其结果就是: 当所有旧副本都被替换后, 整个应用将无法处理请求, 无法对外提供服务。例如,当存活探针可以探测到应用死锁(应用在运行,但是无法继续执行后面的步骤)情况,进而重启pod,有助于提高应用的可用性,即使其中存在缺陷。

weixin_63581562的博客 172

K8s控制器揭秘:一键实现Pod自愈与自动扩缩

控制器是Kubernetes中实现Pod生命周期自动化管理的中间层,通过声明期望状态并持续比对实际状态,实现自愈、扩缩容与故障恢复。常用控制器包括:Deployment(无状态应用,支持滚动更新与回滚)、ReplicaSet(维持指定副本数)、DaemonSet(每节点运行一个Pod)、Job(一次性任务)、CronJob(定时任务)及StatefulSet(有状态应用,提供稳定标识、网络和存储)。其中,Deployment通过管理ReplicaSet实现版本迭代,而StatefulSet结合无头服务保障有

2301_80092853的博客 246

K8s Pod 反复重启 CrashLoopBackOff:从 exit code 到根因的 5 步排查

容器起来 37 秒就被杀、kubectl get pod 满屏 CrashLoopBackOff,而应用日志只有一行。本文给出一条从 exit code 反推根因的 5 步排查链,附 exit 137/143/1/2 与 OOMKilled 的对照表和最小复现。

2501_92769340的博客 266

容器化与 K8s 编排

容器化与K8s编排是云原生高可用的核心,但仅部署Docker+K8s仍难保障稳定性。真实场景中,扩容滞后、POD雪崩、发布故障、资源争抢等问题频发。需构建三层防御:通过QoS隔离、PDB防护、镜像预拉取保障POD稳定;基于多维度指标(CPU/QPS/RT)实现精准弹性扩缩容;结合可观测性与故障自愈机制,实现自动重启、驱逐与熔断。大促案例表明,唯有系统化治理才能避免连锁崩溃,真正实现高可用。

weixin_38805083的博客 158

K8s ConfigMap实战:配置解耦与动态更新

Kubernetes中ConfigMap用于存储配置数据,以键值对形式实现镜像与配置解耦,提升可移植性。支持通过命令行、文件、目录或YAML创建,最大1MB限制。可通过环境变量、envFrom或Volume方式注入Pod,适用于Nginx、MySQL等场景。企业级应用中,如phpMyAdmin+MySQL共用配置,确保参数统一管理,避免重复构建镜像,增强运维效率。

2301_80092853的博客 203

K8s的部署

名称IPsy-harbor。

2503_92709449的博客 178

K8s 动态存储供应:StorageClass 与 Local Path Provisioner 自动创建 PV 实战

之前创建存储卷(PV)都需要管理员手动操作,这类卷被称为静态卷。那么 Kubernetes 能不能 “智能” 管理卷呢?比如需要用卷时自动创建,不用时自动清理?答案是可以的 —— 这就是动态卷供应的能力。它彻底省去了集群管理员提前手动配置存储的工作,用户只要提出存储需求,系统就会自动创建对应的存储卷。

weixin_63581562的博客 312

docker run 的 6 个问题,K8s 逐个解决:从脚本部署到声明式发布

两个Ready,集群就绪。如果 node1 一直是NotReady,99% 是 Calico 的 Pod 没起来(),通常是因为拉不到镜像,或者防火墙没关。

weixin_45488455的博客 241

GPUWorks 免 K8s 交付:单二进制装起推理平台,异构加速卡统一纳管

面向受限机房的 GPUWorks 落地方法:单二进制免 K8s 交付推理服务,用适配层统一纳管多厂商加速卡,并给出路由、观测与分阶段上线步骤。

2301_78967866的博客 387
上一篇: 一文消除大数据处理的资源浪费,实现 90% 成本降低
下一篇: CA 不够用了?Azure 推 Karpenter + Spot,让 AKS 便宜 80%!
CloudPilotAI
博客等级 码龄2年 519粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值