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

news2025/1/24 1:23:04

一、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 Integer
                                     Scaling 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.coloradmin.cn/o/2281155.html

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

相关文章

Qt —— 控件属性

一、概述 控件有很多属性&#xff0c;我们学习和整理常见和常用的几个属性&#xff0c;由于所有的控件基本都是继承Widget类的&#xff0c;所以前面会先拿Widget类和常见的控件进行示范。 Qt Designer左侧一长条就是Qt给我们内置好的控件&#xff1a; 二、enabled 状态属性 …

vue+高德API搭建前端Echarts图表页面

利用vue搭建Echarts图表页面&#xff0c;在搭建Echarts图表中&#xff0c;如果搭建地理地形图需要准备一些额外的文件&#xff0c;地理json文件和js文件&#xff0c;js文件目前在网上只能找省一级的&#xff0c;json文件有对应的省市县&#xff0c;js文件和json文件对应的也是不…

Gartner发布2025年网络治理、风险与合规战略路线图

新型网络风险和合规义务&#xff0c;日益成为网络治理、风险与合规实践面临的问题。安全和风险管理领导者可以参考本文&#xff0c;实现从被动、专注于合规的方法到主动、进一步自动化方法的转型。 主要发现 不断变化的监管环境和不断扩大的攻击面&#xff0c;使企业机构难以实…

Redis 集群模式入门

Redis 集群模式入门 一、简介 Redis 有三种集群模式&#xff1a;主从模式、Sentinel 哨兵模式、cluster 分片模式 主从复制&#xff08;Master-Slave Replication&#xff09;: 在这种模式下&#xff0c;数据可以从一个 Redis 实例&#xff08;主节点 Master&#xff09;复…

查看电脑或笔记本CPU的核心数方法及CPU详细信息

一、通过任务管理器查看 1.打开任务管理器 可以按下“Ctrl Shift Esc”组合键&#xff0c;或者按下“Ctrl Alt Delete”组合键后选择“任务管理器”来打开。 2.查看CPU信息 在任务管理器界面中&#xff0c;点击“性能”标签页&#xff0c;找到CPU使用记录区域&#xff0c…

光学遥感显著性目标检测2023-2024论文学习

GRSL 2023&#xff1a; Attention-Aware Three-Branch Network for Salient Object Detection in Remote Sensing Images 基于encoder-decoder框架&#xff0c;提出了一系列缝合模块&#xff0c;GCA&#xff0c;FDUC&#xff0c;MSDC&#xff0c;RA。 GRSL 2023&#xff1a;OR…

Kubernetes 集群中安装和配置 Kubernetes Dashboard

前言 上篇成功部署Kubernetes集群后&#xff0c;为了方便管理和监控集群资源&#xff0c;安装Kubernetes Dashboard显得尤为重要。Kubernetes Dashboard 是一个通用的、基于 Web 的 UI&#xff0c;旨在让用户轻松地部署容器化应用到 Kubernetes 集群&#xff0c;并对这些应用进…

2025西湖论剑-babytrace

前言 就做了下题目&#xff0c;pwn1/3 都是签到&#xff0c;pwn2 后面绕 ptrace 有点意思&#xff0c;简单记录一下 漏洞分析 子进程中的读/写功能没有检查负数的情况&#xff0c;存在越界读写&#xff1a; void __fastcall get_value(__int64 *int64_arr) {__int64 ll; //…

HarmonyOS Next 应用UI生成工具介绍

背景 HarmonyOS Next适配开发过程中难买难要参考之前逻辑&#xff0c;但是可能时间较长文档不全&#xff0c;只能参考Android或iOS代码&#xff0c;有些逻辑较重的场景还可以通过AI工具将Android 的Java代码逻辑转成TS完成部分复用。对于一些UI场景只能手动去写&#xff0c;虽…

计算机网络 (56)交互式音频/视频

一、定义与特点 定义&#xff1a;交互式音频/视频是指用户使用互联网和其他人进行实时交互式通信的技术&#xff0c;包括语音、视频图像等多媒体实时通信。 特点&#xff1a; 实时性&#xff1a;音频和视频数据是实时传输和播放的&#xff0c;用户之间可以进行即时的交流。交互…

【深度学习】Java DL4J 2024年度技术总结

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…

考研408笔记之数据结构(三)——串

数据结构&#xff08;三&#xff09;——串 1. 串的定义和基本操作 本节内容很少&#xff0c;重点是串的模式匹配&#xff0c;所以对于串的定义和基本操作&#xff0c;我就简单提一些易错点。另外&#xff0c;串也是一种特殊的线性表&#xff0c;只不过线性表是可以存储任何东…

Spring Data JPA使用基础教程

文章目录 Spring Data JPA使用基础教程一、引言二、环境搭建1、添加依赖2、配置数据库 三、核心组件1、实体类2、Repository 接口 四、使用示例1、基本操作1.1、保存数据1.2、查询数据1.3、更新数据1.4、删除数据 2、自定义查询 五、最佳实践1. **合理使用懒加载与急加载**2. *…

到华为考场考HCIE的注意事项和考试流程

大家好&#xff0c;我是张同学&#xff0c;来自成都职业技术学院2021级计算机网络专业。最近成功通过了 Datacom HCIE 考试&#xff0c;在这里和大家分享一下我的经验。 考证契机 在母校的培养下&#xff0c;我接触到ICT这个行业&#xff0c;打好了基础&#xff0c;开始了成…

STM32 ST7735 128*160

ST7735 接口和 STM32 SPI 引脚连接 ST7735 引脚功能描述STM32 引脚连接&#xff08;示例&#xff0c;使用 SPI1&#xff09;SCLSPI 时钟信号 (SCK)PA0(SPI1_SCK)SDASPI 数据信号 (MOSI)PA1 (SPI1_MOSI)RST复位信号 (Reset)PA2(GPIO 手动控制)DC数据/命令选择 (D/C)PA3 (GPIO 手…

大华相机DH-IPC-HFW3237M支持的ONVIF协议

使用libONVIF C库。 先发现相机。 配置 lib目录 包含 编译提示缺的文件&#xff0c;到libonvif里面拷贝过来。 改UDP端口 代码 使用msvc 2022的向导生成空项目&#xff0c;从项目的main示例拷贝过来。 CameraOnvif.h #pragma once#include <QObject> #include &l…

JavaWeb过滤器和监听器实现网页计数功能

过滤器用于在请求到达Servlet之前或响应返回给客户端之前对请求或响应进行预处理或后处理操作&#xff0c;监听器用于监听Web应用中的事件。 实现网页计数功能。要完成两项计数&#xff1a; 第一&#xff0c;本网页历史访问人数&#xff1b; 第二&#xff0c;本站当前在线用户…

AIGC视频生成明星——Emu Video模型

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍Meta的视频生成模型Emu Video&#xff0c;作为Meta发布的第二款视频生成模型&#xff0c;在视频生成领域发挥关键作用。 &#x1f33a;优质专栏回顾&am…

Genetic Prompt Search via Exploiting Language Model Probabilities

题目 利用语言模型概率的遗传提示搜索 论文地址&#xff1a;https://www.ijcai.org/proceedings/2023/0588.pdf 项目地址&#xff1a;https://github.com/zjjhit/gap3 摘要 针对大规模预训练语言模型(PLMs)的即时调优已经显示出显著的潜力&#xff0c;尤其是在诸如fewshot学习…

NavVis手持激光扫描帮助舍弗勒快速打造“数字孪生”工厂-沪敖3D

在全球拥有近100家工厂的舍弗勒&#xff0c;从2016年开启数字化运营进程&#xff0c;而当前制造、库存、劳动力和物流的数字化&#xff0c;已无法支持其进一步简化工作流程&#xff0c;亟需数字化物理制造环境&#xff0c;打造“数字孪生”工厂。 NavVis为其提供NavVis VLX 3…