Cloud Foundry,K8S,Mesos Marathon弹性扩缩容特性对比

一、Cloud Foundry

使用Scaling an Application Using App Autoscaler插件,基于资源使用情况触发简单扩缩容
CPU、内存、Http带宽、延时等
监控这些资源的使用情况决定扩缩容策略:实例是增加还是减少
在这里插入图片描述

在这里插入图片描述
Instance Limits 限制实例数量范围,定义伸缩上下限
在这里插入图片描述
Add a Scaling Rule 定义伸缩规则
在这里插入图片描述
还可以定义生效时间范围规则等等

0.扩缩容机制

手动扩缩容:通过 cf scale 命令调整应用实例数。
自动扩缩容:依赖第三方工具或插件(如 App Autoscaler),可根据 CPU 使用率、内存占用等指标进行扩缩容。

二、K8S

1.常规扩缩容

  • HPA:横向扩缩容,复制pod,增加数量
  • VPA:纵向扩缩容,增大pod的资源
  • cronHPA:定时扩缩容
  • cluster-autoscaler:集群底层服务器扩缩容
    在这里插入图片描述
    主要基于CPU和内存阈值,自动增加+减少pod数量

2.Istio+Knative 边车Serverless扩缩容

Istio 和 Knative 是 Kubernetes 上流行的两个开源项目,用于构建和运行云原生应用。两者结合可为应用提供服务网格、流量管理、服务自动扩缩容等能力,是 Serverless 架构和微服务架构的最佳搭档。

Istio 是一个开源的服务网格实现,用于连接、管理和保护 Kubernetes 上的微服务。其主要功能包括:

核心组件

  • Envoy Proxy:每个服务旁部署的边车代理,负责服务间通信、流量管理和安全。
  • Pilot:管理流量规则和服务发现。
  • Telemetry:收集遥测数据和执行策略控制。
  • Citadel:提供服务间安全通信(mTLS 证书管理)。

功能亮点

  • 流量管理:支持请求路由、流量分配、A/B 测试、蓝绿部署、金丝雀发布等。
  • 安全性:提供服务间 mTLS 加密、访问控制、身份认证等。
  • 监控与可观测性:集成 Prometheus、Grafana、Jaeger,提供详细的指标和分布式追踪。
  • 弹性特性:自动重试、熔断器、超时机制。

使用场景

  • 微服务之间的安全通信
  • 流量细粒度控制
  • 自动化服务监控

Knative 是基于 Kubernetes 的开源平台,旨在提供构建 Serverless 应用的能力。它将复杂的 Kubernetes 操作简化为易用的接口,专注于无服务器(Serverless)工作负载的自动扩展、事件驱动和部署。

核心组件

  • Knative Serving专注于无状态服务的部署和管理。
  • 支持零到多实例的自动扩展(scale-to-zero)。
  • 提供请求路由、自动修复和流量拆分。
  • 支持基于流量权重的金丝雀部署和 A/B 测试。

Knative Eventing

  • 提供事件驱动的架构支持。
  • 能够将事件源与 Knative 服务连接起来。
  • 支持多种事件源(Kafka、HTTP、Google Cloud Pub/Sub 等)。

功能亮点

  • 快速启动和按需扩展:根据负载自动调整实例数量,零流量时可缩减至 0。
  • 事件驱动架构:轻松实现事件触发的无服务器应用。
  • 开发者友好:屏蔽底层Kubernetes 细节,只需定义简单的 YAML 即可部署。

使用场景

  • 基于 HTTP 的无状态服务
  • 事件驱动的任务处理
  • 零配置的 Serverless 部署

Knative 的核心依赖 Istio 提供的服务网格能力来管理流量、监控和安全。在 Knative 中,Istio 扮演了底层流量管理和安全通信的角色。
典型应用场景
事件驱动的 Serverless 应用
利用 Knative Eventing 捕获 Kafka 或云事件,将事件路由到 Knative 服务。
使用 Istio 提供的流量管理和安全机制。

金丝雀部署
Knative 配置多版本服务。
Istio 分配流量(如 90% 流量到 v1,10% 流量到 v2)。

弹性缩放
Knative 实现零到多实例扩展,结合 Istio 自动监控和负载均衡。

0.扩缩容机制

手动扩缩容:
使用 kubectl scale 命令调整 Deployment 或 StatefulSet 的副本数。
自动扩缩容:
HPA(Horizontal Pod Autoscaler):基于 CPU、内存或自定义指标(通过 Prometheus Adapter 等)实现水平扩展。
VPA(Vertical Pod Autoscaler):动态调整容器的资源请求与限制。
Cluster Autoscaler:自动调整节点数量以支持 Pod 的需求。

Service Mesh

Service Mesh 是一种用于管理微服务通信的架构模式,提供了一层基础设施,用于处理服务间的网络流量。它主要解决了分布式微服务架构中常见的通信问题,如服务发现、负载均衡、认证授权、流量控制和可观测性。

核心特性
  • 服务间通信的抽象层
    将通信逻辑从应用代码中抽离出来。
    通过透明代理(sidecar)实现请求拦截和处理。
  • 零信任安全模型
    支持 mTLS(双向 TLS)加密,确保服务间通信安全。
    提供认证和授权控制。
  • 流量控制
    支持 A/B 测试、金丝雀发布、蓝绿部署等。
    提供动态路由、故障注入和超时重试。
  • 可观测性
    提供分布式追踪、日志和监控指标。
    集成工具如 Prometheus、Grafana、Jaeger。
  • 弹性特性
    实现断路器、限流、重试和负载均衡。

Istio是最流行的 Service Mesh,功能强大,生态完善

Service Mesh 与 Istio/Knative 的关系

  • Service Mesh 是基础架构
    Service Mesh 为微服务提供通用的通信管理层。
    Istio 是 Service Mesh 的具体实现之一。
  • Knative 使用 Service Mesh
    Knative 依赖 Service Mesh(如 Istio)来实现流量路由和监控功能。
    Knative 专注于 Serverless 场景,而 Service Mesh 提供底层支持。

三、Mesos+Marathon

Autoscale controller观察每个App的使用情况,根据预定义的规则,通过Marathon的API来实现 scale up/down,来实现扩缩容策略
https://github.com/d2iq-archive/marathon-lb-autoscale
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/38be8c524424415db54be4c948b05de2.pn
创建autoscale应用
关联Marathon和HAProxy

{"id": "marathon-lb-autoscale","args":["--marathon", "http://leader.mesos:8080","--haproxy", "http://marathon-lb.marathon.mesos:9090","--apps", "nginx_10000","--target-rps","100"##添加下面的Specific options参数,制定对应的扩缩容规则],"cpus": 0.1,"mem": 16.0,"instances": 1,"container": {"type": "DOCKER","docker": {"image": "mesosphere/marathon-lb-autoscale","network": "HOST","forcePullImage": false}}
}
Specific options:--marathon URL               URL for Marathon--haproxy [URLs]             Comma separate list of URLs for HAProxy. If this is a Mesos-DNS A-record, all backends will be polled.--interval Float             Number of seconds (N) between update intervals (Default: 60)--samples Integer            Number of samples to average (Default: 10)--cooldown Integer           Number of additional intervals to wait after making a scale change (Default: 5)--target-rps Integer         Target number of requests per second per app instance (Default: 1000)--apps [APPS]                Comma separated list of <app>_<service port> pairs to monitor--marathonCredentials [MarathonCredentials]Colon separated string of <username>:<password>--haproxyCredentials [HAProxyCredentials]Colon separated string of <username>:<password>--threshold-percent Float    Scaling will occur when the target RPS differs from the current RPS by at least this amount (Default: 0.5)--threshold-instances IntegerScaling will occur when the target number of instances differs from the actual number by at least this amount (Default: 3)--max-instances Integer      Maximum number of instances an app may be scaled to (Default: a huge number)--min-instances Integer      Minimum number of instances an app must have (Default: 1)

0.扩缩容机制

手动扩缩容:通过 Marathon Web UI 或 API 调整应用实例数。
自动扩缩容:需要集成第三方工具(如 Chronos、Prometheus 或其他外部脚本)实现。

四、总结

在这里插入图片描述

  • Cloud Foundry:适合以开发为中心的小型团队或快速构建和部署应用的场景。
  • Kubernetes:适合云原生应用、需要复杂扩缩容策略、或需要支持多种资源管理的场景。
  • Mesos Marathon:适合大规模批量任务、数据密集型计算场景,但生态支持较弱。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/67589.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

node中文名的js文件有问题

新版Node无法运行含有中文名的JS文件&#xff0c;具体表现在无报错无反应。如下图&#xff1a; 源码如下&#xff1a; 改成英文的JS文件&#xff0c;则正常&#xff0c;如下图&#xff1a;

flutter 常用UI组件

文章目录 1. Toast 文本提示框oktoastbot_toast2. loading 加载窗flutter_easyloading3. 对话框gex dialog4.下拉刷新pull_to_refresh5. pop 窗custom_pop_up_menu6. pin code 密码框pinput7. 二维码qr_flutter8. swiper 滚动组件carousel_sliderflutter_swiper_view9. Badge 角…

HTML学习笔记(4)

目录 一、背景相关样式 二、定位position 三、javascript 1、变量的定义 2、数据类型 3、绑定事件 一、背景相关样式 background-image: url(); // 背景图片 background-repeat: repeat; // 背景图片是否平铺 no-repeat background-size: 200px; // 背景图片尺寸 cover把…

【软件测试】用例篇

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站 &#x1f308;个人主页&#xff1a; 南桥几晴秋 &#x1f308;C专栏&#xff1a; 南桥谈C &#x1f308;C语言专栏&#xff1a; C语言学习系…

Jenkins-基于Role的鉴权机制

jenkins自带了一些全局性的安全配置。 但无法通过job等相对细粒度的来控制使用者的权限。但它可以借助相关的插件实现细颗粒的权限控制。 插件&#xff1a; Role-based Authorization Strategy 需要在configure global security中配置授权策略如下&#xff1a; 保存后&#x…

javaEE初阶————多线程初阶(2)

今天给大家带来第二期啦&#xff0c;保证给大家讲懂嗷&#xff1b; 1&#xff0c;线程状态 NEW安排了工作还未开始行动RUNNABLE可工作的&#xff0c;或者即将工作&#xff0c;正在工作BLOCKED排队等待WAITING排队等待其他事TIMED_WAITING排队等待其他事TERMINATED工作完成了 …

VB.net实战(VSTO):解决WPS Ribbon图标灰色背景

问题&#xff1a;用VSTO制作插件&#xff0c;在MS Office中图标显示正常&#xff0c;但在WPS Office中图标显示为灰色背景 原因&#xff1a;使用的图标是纯透明背景的&#xff0c;这样的图标在WPS中会变为灰色背景。 以下这个解决办法是我自己摸索出来的&#xff0c;对您有用的…

在.NET用C#将Word文档转换为HTML格式

将Word文档转换为HTML格式尤其具有显著的优势&#xff0c;它不仅能够确保文档内容在多种设备和平台上保持一致灵活的显示&#xff0c;还便于通过网络进行传播和集成到各种Web应用中。随着越来越多的企业和开发者寻求更灵活、更具兼容性的文件处理方式&#xff0c;.NET框架下的C…

在服务器上增加新网段IP的路由配置

在服务器上增加新网段IP的路由配置 前提条件步骤一:检查当前路由表步骤二:添加新路由步骤三:验证新路由步骤四:持久化路由配置脚本示例结论在网络管理中,路由配置是一项基本且重要的任务。它决定了数据包在网络中的传输路径。本文将详细介绍如何在服务器上增加新的路由配置…

鸿蒙学习构建视图的基本语法(二)

一、层叠布局 // 图片 本地图片和在线图片 Image(https://developer.huawei.com/allianceCmsResource/resource/HUAWEI_Developer_VUE/images/080662.png) Entry Component//自适应伸缩 设置layoutWeight属性的子元素与兄弟元素 会按照权重进行分配主轴的空间// Position s…

电脑风扇声音大怎么办? 原因及解决方法

电脑风扇是电脑的重要组件之一&#xff0c;它的作用是为电脑的各个部件提供冷却&#xff0c;防止电脑过热。然而&#xff0c;有时候我们会发现电脑风扇的声音特别大&#xff0c;不仅影响我们的使用体验&#xff0c;也可能是电脑出现了一些问题。那么&#xff0c;电脑风扇声音大…

OpenVela——专为AIoT领域打造的开源操作系统

目录 一、系统背景与开源 1.1. 起源 1.2. 开源 二、系统特点 2.1. 轻量化 2.2. 标准兼容性 2.3. 安全性 2.4. 高度可扩展性 三、技术支持与功能 3.1. 架构支持 3.2. 异构计算支持 3.3. 全面的连接套件 3.4. 开发者工具 四、应用场景与优势 4.1. 应用场景 4.2. …

хорошо哈拉少wordpress俄语主题

хорошо哈拉少wordpress俄语主题 wordpress俄文网站模板&#xff0c;推荐做俄罗斯市场的外贸公司建俄语独立站使用。 演示 https://www.jianzhanpress.com/?p7360

TOSUN同星TsMaster使用入门——3、使用系统变量及c小程序结合panel面板发送报文

本篇内容将介绍TsMaster中常用的Panel面板控件以及使用Panel控件通过系统变量以及c小程序来修改信号的值&#xff0c;控制报文的发送等。 目录 一、常用的Panel控件介绍 1.1系统——启动停止按钮 1.2 显示控件——文本框 1.3 显示控件——分组框 1.4 读写控件——按钮 1.…

程序设计:排版、检验报告的上下标解决几种办法

【啰嗦两句】 本文重点在于提供几个针对排版文档、各种检验报告系统等程序设计时&#xff0c;遇到的上下标录入、绘制展示等问题的应对办法&#xff0c;但是准确地说&#xff0c;并没有非常优秀的方案。 【上下标难题】 一般的行业或许对上下标并没有严格要求&#xff0c;多数…

绘图专用,26个常见流程图符号及其解释

关注作者 当您设计网站、构建应用程序或绘制业务系统时&#xff0c;您需要一种方法来清晰地绘制步骤和用户流程。虽然您可以使用流程图来概述这些过程&#xff0c;但箭头和方框只能帮助您到目前为止。为了清楚地表达您的意思&#xff0c;您需要流程图符号。 为了帮助解释每个流…

【STM32-学习笔记-11-】RTC实时时钟

文章目录 RTC实时时钟一、RTC简介二、RTC框图三、RTC基本结构四、RTC操作注意事项五、RTC函数六、配置RTCMyRTC.c 七、示例&#xff1a;实时时钟①、main.c②、MyRTC.c③、MyRTC.h RTC实时时钟 一、RTC简介 RTC&#xff08;Real Time Clock&#xff09;实时时钟 RTC是一个独立…

Asp .Net Core 实现微服务:集成 Ocelot+Nacos+Swagger+Cors实现网关、服务注册、服务发现

什么是 Ocelot ? Ocelot是一个开源的ASP.NET Core微服务网关&#xff0c;它提供了API网关所需的所有功能&#xff0c;如路由、认证、限流、监控等。 Ocelot是一个简单、灵活且功能强大的API网关&#xff0c;它可以与现有的服务集成&#xff0c;并帮助您保护、监控和扩展您的…

性价比1.2V电压基准替代

前言&#xff1a; 小于2V的电压基准比较少&#xff0c;且价格稍贵&#xff0c;对于要求不高的场合&#xff0c;1117可以替代使用&#xff0c;温度系数低于 100ppm/C, 价格便宜。 1117是线性稳压器的一种&#xff0c;一般情况下&#xff0c;输出电压可调。 如下述的1117&#xf…

使用 Java 和 FreeMarker 实现自动生成供货清单,动态生成 Word 文档,简化文档处理流程。

在上一篇博客中主要是使用SpringBootApache POI实现了BOM物料清单Excel表格导出&#xff0c;详见以下博客&#xff1a; Spring Boot Apache POI 实现 Exc&#xff08;&#xff09;el 导出&#xff1a;BOM物料清单生成器&#xff08;支持中文文件名、样式美化、数据合并&#…