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.rhkb.cn/news/4319.html

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

相关文章

ComfyUI 矩阵测试指南:用三种方法,速优项目效果

在ComfyUI中&#xff0c;矩阵测试也叫xyz图表测试&#xff0c;作用是通过控制变量的方式来对Lora模型以及各种参数开展测试&#xff0c;并进行有效区分。其中测试方法有很多种&#xff0c;可以通过借助插件也可以自行搭建工作流实现&#xff0c;下面介绍3种方式&#xff1a; 1…

什么宠物最好养?

在忙碌的生活中&#xff0c;想要拥有一份陪伴&#xff0c;却又担心没时间打理&#xff1f;别怕&#xff0c;今天就来给大家揭秘&#xff0c;什么宠物最好养&#xff0c;让你轻松开启养宠生活&#xff0c;即使再忙也能享受毛孩子带来的快乐&#xff01; 一、仓鼠&#xff1a;萌…

mfc操作json示例

首先下载cJSON,加入项目; 构建工程,如果出现, fatal error C1010: unexpected end of file while looking for precompiled head 在cJSON.c文件的头部加入#include "stdafx.h"; 看情况,可能是加到.h或者是.cpp文件的头部,它如果有包含头文件, #include &…

将IDLE里面python环境pyqt5配置的vscode

首先安装pyqt5全套&#xff1a;pip install pyqt5-tools 打开Vscode&#xff1a; 安装第三方扩展&#xff1a;PYQT Integration 成功配置designer.exe的路径【个人安装pyqt5的执行路径】&#xff0c;便可直接打开UI文件&#xff0c;进行编辑。 配置pyuic,如果下图填写方法使用…

郑州大学2022级大三期末复习总结(数据库,传感器,嵌入式,人工智能,移动终端开发,计算机英语)

本人是郑州大学2022级的一名大三学生&#xff0c;上学期期末苦于没有复习资料硬学了三周&#xff0c;所以想着将脑海里还残留着的各个课程的知识点&#xff0c;考点记录下来。这些资料不能保证你考高分&#xff0c;只能给你提供一些复习的方向和可能高频的知识点。 有些地方的…

基于ESP32+VUE+JAVA+Ngnix的一个小型固件编译系统

一、前提 开发ESP32固件时&#xff0c;使用本地环境输出固件时&#xff0c;存在多个开发多种开发平台的问题。会导致最终输出的固件不统一。更可能因为本地的开发环境差异导致固件无法追溯。 基于上述原因&#xff0c;开发了一个小型的固件编译系统。将该系统部署在一台ubutn…

Spring自定义BeanPostProcessor实现bean的代理Java动态代理知识

上文&#xff1a;https://blog.csdn.net/qq_26437925/article/details/145241149 中大致了解了spring aop的代理的实现&#xff0c;其实就是有个BeanPostProcessor代理了bean对象。顺便复习下java代理相关知识 目录 自定义BeanPostProcessor实现aopJava动态代理知识动态代理的几…

KubeSphere部署安装,接入KubeKey安装的k8s集群

KubeSphere安装接入KubeKey安装的k8s集群 文章目录 KubeSphere安装接入KubeKey安装的k8s集群 一.NFS安装配置1.服务器安装NFS服务2.下载并部署 NFS Subdir External Provisioner1).下载部署文件2).创建 NameSpace3).创建 RBAC 资源4).配置 deployment.yaml5).部署 Storage Clas…

redis性能优化参考——筑梦之路

基准性能测试 redis响应延迟耗时多长判定为慢&#xff1f; 比如机器硬件配置比较差&#xff0c;响应延迟10毫秒&#xff0c;就认为是慢&#xff0c;机器硬件配置比较高&#xff0c;响应延迟0.5毫秒&#xff0c;就认为是慢。这个没有固定的标准&#xff0c;只有了解了你的 Red…

财务RPA就是财务机器人吗?有什么作用

近年来&#xff0c;财务RPA&#xff08;机器人流程自动化&#xff09;逐渐成为财务领域的热门话题。很多人初次听到“财务RPA”时&#xff0c;可能会疑惑&#xff1a;财务RPA是不是财务机器人&#xff1f;它到底能做什么&#xff1f;带着这些问题&#xff0c;我们一起来探讨财务…

RabbitMQ---事务及消息分发

&#xff08;一&#xff09;事务 RabbitMQ是基于AMQP协议实现的&#xff0c;该协议实现了事务机制&#xff0c;所以RabbitMQ也支持事务机制&#xff0c;他的事务允许开发者确保消息的发送和接收时原子性的&#xff0c;要么全部成功&#xff0c;要么全部失败 我们设置事务有三步…

Django简介与虚拟环境安装Django

目录 1.Django简介 1.1 Django 的核心特点 1.2 Django 的核心组件 1.3 Django 的应用场景 1.4 总结 2.基础环境建立 2.1 创建虚拟环境 2.1.1 使用 virtualenv 创建虚拟环境 2.1.2 使用 venv 创建虚拟环境 2.2 激活虚拟环境 2.2.1 在 Windows 上 2.2.2 在 macOS 或 …

计算机毕业设计PySpark+Hadoop+Hive机票预测 飞机票航班数据分析可视化大屏 航班预测系统 机票爬虫 飞机票推荐系统 大数据毕业设计

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

vue+高德API搭建前端3D交通页面

1. 模板部分 (<template>) <template><div class"content"><div><div id"container"></div></div></div> </template> 功能&#xff1a;定义了组件的HTML结构。分析&#xff1a; div.content 是最…

第十三章:数据库技术

文章目录&#xff1a; 一&#xff1a;基础 1.概念 2.特点 3.常见数据库品牌 4.数据库应⽤系统 4.1 C/S 4.2 B/S 5.数据模型的分类 6.名词解析 7.关系运算 二&#xff1a;Access 1.基础 2.操作 2.1 建立表 2.2 维护表 2.3 创建查询 2.4 创建窗体 2.5 创建报表…

《汽车维护与修理》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答&#xff1a; 问&#xff1a;《汽车维护与修理》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是知网收录的正规学术期刊。 问&#xff1a;《汽车维护与修理》级别&#xff1f; 答&#xff1a;国家级。主管单位&#xff1a;中国汽车维修行业协会 …

31、【OS】【Nuttx】OSTest分析(1):stdio测试(一)

背景 接上篇wiki 30、【OS】【Nuttx】构建脚本优化&#xff0c;引入待构建项目参数 最小系统分析完后&#xff0c;下一个能够更全面了解Nuttx的Demo&#xff0c;当然选择OSTest&#xff0c;里面有大量关于OS的测试用例&#xff0c;方便对Nuttx的整体功能有个把握。 stdio_tes…

Ubuntu 24.04 LTS 安装 Docker Desktop

Docker 简介 Docker 简介和安装Ubuntu上学习使用Docker的详细入门教程Docker 快速入门Ubuntu版&#xff08;1h速通&#xff09; Docker 安装 参考 How to Install Docker on Ubuntu 24.04: Step-by-Step Guide。 更新系统和安装依赖 在终端中运行以下命令以确保系统更新并…

Elasticsearch 和arkime 安装

安装一定要注意版本号&#xff0c;不然使用不了 这里Ubuntu使用ubuntu-20.04.6-desktop-amd64.iso elasticsearch这里使用Elasticsearch 7.17.5 | Elastic arkime这里使用wget https://s3.amazonaws.com/files.molo.ch/builds/ubuntu-20.04/arkime_3.4.2-1_amd64.deb 大家想…

C语言之整数转换英文表示

&#x1f31f; 嗨&#xff0c;我是LucianaiB&#xff01; &#x1f30d; 总有人间一两风&#xff0c;填我十万八千梦。 &#x1f680; 路漫漫其修远兮&#xff0c;吾将上下而求索。 整数转换英文表示 摘要&#xff1a;本文设计了一种基于C语言的数字到英文表示的转换程序&am…