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;

Node.js 到底是什么

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境&#xff0c;它允许开发者使用 JavaScript 编写服务器端代码。 一、主要特点 1. 事件驱动和非阻塞 I/O 模型 Node.js 采用事件驱动架构&#xff0c;通过回调函数处理 I/O 操作&#xff0c;这使得它在处理大量并发请…

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把…

【深入解析】 RNN 算法:原理、应用与实现

深入解析 RNN 算法&#xff1a;原理、应用与实现 导语 递归神经网络&#xff08;Recurrent Neural Network&#xff0c;简称 RNN&#xff09;是深度学习领域的一项革命性技术&#xff0c;它对处理序列数据&#xff08;如文本、语音、视频等&#xff09;具有无可比拟的优势。与…

2.slf4j入口

文章目录 一、故事引入二、原理探究三、SLF4JServiceProvider四、总结 一、故事引入 故事要从下面这段代码说起 public class App {private static final Logger logger LoggerFactory.getLogger(App.class);public static void main( String[] args ) throws Exception {lo…

【软件测试】用例篇

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

优雅解决webview_flutter不支持安卓选择图片视频文件问题

这个问题&#xff0c;网上一搜索&#xff0c;就是要去修改别人写好的插件。 搞Flutter开发&#xff0c;尽量不要去修改别人的插件 &#xff0c;特别是像 webview_flutter 这种比较大的官方插件。 相信我&#xff0c;你拿捏不了它。 主要问题就是&#xff1a; webview_flutter…

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…

介绍下常用的前端框架及时优缺点

以下是一些常用的前端框架及其优缺点介绍&#xff1a; React • 优点 • 组件化架构&#xff1a;可构建可复用的UI组件&#xff0c;提高开发效率和组件可维护性。 • 虚拟DOM&#xff1a;高效更新页面&#xff0c;减少直接操作DOM的性能开销。 • 灵活性和可扩展性&#xf…

使用python脚本点击页面,避免google colab超时断开

from pynput.mouse import Button, Controller import timedef move_and_click_periodically(x, y, interval10):mouse Controller()while True:# 移动鼠标到指定位置mouse.position (x, y)print(f现在鼠标位置: {mouse.position})# 点击鼠标左键mouse.click(Button.left, 1)…

【Leetcode 每日一题 - 扩展】421. 数组中两个数的最大异或值

问题背景 给你一个整数数组 n u m s nums nums&#xff0c;返回 n u m s [ i ] X O R n u m s [ j ] nums[i]\ XOR\ nums[j] nums[i] XOR nums[j] 的最大运算结果&#xff0c;其中 0 ≤ i ≤ j < n 0 ≤ i ≤ j < n 0≤i≤j<n。 数据约束 1 ≤ n u m s . l e n g…

AWS S3 跨账户访问 Cross Account Access

进入S3对应的存储桶&#xff0c;上面选项选权限&#xff0c;存储桶策略 -- 编辑&#xff0c;输入对应的policy。 完全控制&#xff0c;包含上传删除权限&#xff0c;policy如下&#xff1a; {"Version": "2012-10-17","Statement": [{"Si…

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

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

使用 Go 语言生成样式美观的 PDF 文件

文章精选推荐 1 JetBrains Ai assistant 编程工具让你的工作效率翻倍 2 Extra Icons&#xff1a;JetBrains IDE的图标增强神器 3 IDEA插件推荐-SequenceDiagram&#xff0c;自动生成时序图 4 BashSupport Pro 这个ides插件主要是用来干嘛的 &#xff1f; 5 IDEA必装的插件&…