一次受控实验中,Kubernetes更省CPU却多吃15%至37%内存

|作者: QUASA 编辑团队|2 分钟阅读| 1
一次受控实验中,Kubernetes更省CPU却多吃15%至37%内存

圣卡塔琳娜州立大学的同机对照实验显示:在受测身份凭证工作负载中,Kubernetes配置的验证CPU占用均值比Docker Compose低约15%至35%;验证及部分DVID签发场景的内存占用均值则高出约15%至37%。这些百分比描述的是特定操作和工作负载组件,不能直接当作整台机器或生产集群的资源差额。

如果服务主要运行在单台主机,团队能接受主机故障后的人工恢复,Docker Compose通常足以承担部署工作。需要跨节点维持副本、在实例故障后自动恢复服务,并经常进行受控发布时,Kubernetes的集群能力才更可能抵得上额外的运维工作。

实验把哪些部署放在一起比较

两套测试环境运行在同一台物理主机上,使用相同的身份服务原型。Compose一侧直接在主机的Docker环境中运行应用、SPIRE身份组件和监控组件;另一侧将相应组件放入单节点Minikube集群的Pod。这样的安排减少了硬件差异,却保留了容器通信、服务发现和网络路径上的部署差异。

请求涉及安全凭证的签发与验证:前端工作负载发起身份请求,断言服务处理凭证,中间层执行验证,目标工作负载处理受保护的操作。测量围绕这些组件在操作期间的CPU、内存和耗时展开。因此,文中的资源百分比应理解为受测工作负载的表现,而不是把控制平面、宿主机和应用全部加总后的集群成本。单节点环境也没有模拟一台节点退出后由另一台节点接管服务的过程。

CPU、内存与请求耗时为何指向不同结论

DVID签发负载中,Kubernetes的CPU占用低于Docker Compose,内存占用则更高。

验证操作的CPU均值在Kubernetes配置下较低,内存均值的方向却相反。DVID签发时,负责断言的工作负载也呈现CPU下降、内存上升的组合。论文对内存增幅给出了概括区间,但明细表中个别验证配置的增幅更小;这个区间不能用来预测每种凭证模式的结果。

均值还掩盖了波动。两种部署的多组测量分布存在重叠,说明单次请求未必呈现与平均值相同的差距。较低的CPU占用也不等于请求完成得更快:计算资源曲线记录运行期间的使用情况,用户感受到的延迟还包含连接建立和服务间通信。

实验里的Anon-Mode没有复用连接,重复建立mTLS连接时,Kubernetes一侧的平均延迟明显更高;采用连接复用的模式,平均耗时差距收窄。原因与请求路径有关:新连接要经历握手、证书处理和集群网络转发,复用连接则摊薄了这部分开销。对于频繁调用身份服务的系统,连接策略、延迟波动和内存峰值都可能影响容量安排,仅凭CPU均值作决定会遗漏这些代价。

单机服务何时继续用Docker Compose

Docker Compose在单台主机上组织应用服务、网络和持久化存储。

服务之间有明确依赖关系,但部署和恢复仍以单台主机为边界时,Compose能保持配置与操作相对集中。Docker Compose文档说明,它在一份YAML配置中定义服务、网络和卷,并提供启动、停止、重建及查看日志的命令。团队仍需管理镜像、数据持久化、监控和备份;只是无需同时维护集群控制面。

Compose也可用于生产单机。Docker的生产部署说明列出生产配置覆盖文件、重建服务容器和重启策略等做法。重启策略能处理部分容器退出问题,但主机本身失效时,原主机上的容器无法靠该策略迁往别处。业务若允许按预案恢复,并能安排发布窗口,增加集群层未必带来相称收益。

这里还应区分容器数量与节点需求。同一主机上运行多个服务,或为某个服务增加实例,并不会自动产生跨主机调度的需求。真正改变选型的是单机故障是否超出业务可接受的恢复时间,以及团队是否需要让发布过程持续维持可用副本。

何时值得承担Kubernetes的复杂度

Kubernetes在跨节点部署中替换故障副本,并将服务流量导向健康的Pod。

当应用必须分布在多台节点,并在实例变化时维持期望副本和可用入口,Kubernetes提供了明确用途。Kubernetes官方概览列出服务发现与负载均衡、受控发布和回滚、自愈、水平扩展等能力。健康检查与副本配置到位后,平台可以替换失效实例,并避免把流量送往尚未就绪的实例。

这些能力要靠应用和基础设施共同支撑。无状态服务较容易在其他节点重建;依赖本地文件或数据库状态的服务,还需要合适的存储与恢复设计。团队也要负责节点、网络、权限、资源请求及监控,否则调度器即使启动了替代Pod,业务路径仍可能无法正常工作。

发布频率同样影响收益。偶尔停机维护的内部服务,可能用简单的重建与回退流程就能满足要求;频繁发布且必须逐步替换实例的服务,更能用上声明式部署和健康状态控制。实验中的单节点Minikube测量提供了资源与延迟线索,跨节点恢复带来的业务收益则要按实际可用性要求判断。

升级决定看四个问题

选型可以从现有服务的故障和发布要求出发,再用真实请求测量资源。下面四个问题分别对应编排能力、业务收益和团队要承担的工作:

  • 节点:服务是否确实需要把副本放在不同主机?如果瓶颈只是单机容量,先区分增加主机资源与引入跨节点调度各能解决什么问题。
  • 可用性:主机失效后,业务可以等待人工恢复多久?若要求在其他节点继续提供服务,应用状态、存储和网络入口也必须支持切换。
  • 发布:团队多久发布一次,是否必须在替换实例期间持续接收流量?发布越频繁,健康检查、渐进更新和回滚机制越有实际价值。
  • 运维:谁持续负责集群升级、权限、资源配置和故障排查?这些工作需要稳定投入,也应计入迁移成本。

若答案指向单机运行、可安排的发布窗口和可接受的人工恢复,继续使用Compose并完善备份及恢复流程是连贯的选择。若跨节点可用性和受控发布已经是明确要求,再用自身负载比较CPU、内存峰值与请求延迟,才能判断Kubernetes的能力与成本是否匹配。

相关阅读:

分享:

订阅我们的新闻通讯

将最新 Web3、AI 和加密货币新闻直接发送到您的邮箱。

0