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 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:适合大规模批量任务、数据密集型计算场景,但生态支持较弱。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

中职网络建设与运维ansible服务

ansible服务 填写hosts指定主机范围和控制节点后创建一个脚本&#xff0c;可以利用简化脚本 1. 在linux1上安装系统自带的ansible-core,作为ansible控制节点,linux2-linux7作为ansible的受控节点 Linux1 Linux1-7 Yum install ansible-core -y Vi /etc/ansible/hosts 添加…

【BUUCTF】[GXYCTF2019]BabySQli

进入页面如下 尝试万能密码注入 显示这个&#xff08;qyq&#xff09; 用burp suite抓包试试 发现注释处是某种编码像是base编码格式 MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VSVZRNRFHOPJ5 可以使用下面这个网页在线工具很方便…

迅为瑞芯微RK3562开发板/核心板应用于人脸跟踪、身体跟踪、视频监控、自动语音识别(ASR)、图像分类驾驶员辅助系统(ADAS)...

可应用于人脸跟踪、身体跟踪、视频监控、自动语音识别(ASR)、图像分类驾驶员辅助系统(ADAS)、车牌识别、物体识别等。iTOP-3562开发板/核心板采用瑞芯微RK3562处理器&#xff0c;内部集成了四核A53Mali G52架构&#xff0c;主频2GHZ&#xff0c;内置1TOPSNPU算力&#xff0c;RK…

蓝桥杯单片机基础部分——5、DS18B20温度传感器

前言 好久没有更新关于蓝桥杯单片机相关的模块了&#xff0c;今天更新一下数字温度传感器DS18B20的相关应用 单线数字温度计DS1820介绍 DS1820数字温度计提供9位(二进制)温度读数&#xff0c;指示器件的温度。信息经过单线接口送入DS1820 或从 DS1820 送出&#xff0c;因此从…

python爬虫入门(实践)

python爬虫入门&#xff08;实践&#xff09; 一、对目标网站进行分析 二、博客爬取 获取博客所有h2标题的路由 确定目标&#xff0c;查看源码 代码实现 """ 获取博客所有h2标题的路由 """url "http://www.crazyant.net"import re…

nginx 配置代理,根据 不同的请求头进行转发至不同的代理

解决场景&#xff1a;下载发票的版式文件&#xff0c;第三方返回的是url链接地址&#xff0c;但是服务是部署在内网环境&#xff0c;无法访问互联网进行下载。此时需要进行走反向代理出去&#xff0c;如果按照已有套路&#xff0c;就是根据不同的访问前缀&#xff0c;跳转不同的…

EI Scopus双检索 | 2025年第四届信息与通信工程国际会议(JCICE 2025)

会议简介 Brief Introduction 2025年第四届信息与通信工程国际会议(JCICE 2025) 会议时间&#xff1a;2025年7月25日-27日 召开地点&#xff1a;中国哈尔滨 大会官网&#xff1a;www.jcice.org 由黑龙江大学和成都信息工程大学主办&#xff0c;江苏科技大学协办的2025年第四届信…

软考高级5个资格、中级常考4个资格简介及难易程度排序

一、软考高级5个资格 01、网络规划设计师 资格简介&#xff1a;网络规划设计师要求考生具备全面的网络规划、设计、部署和管理能力&#xff1b;该资格考试适合那些在网络规划和设计方面具有较好理论基础和较丰富从业经验的人员参加。 02、系统分析师 资格简介&#xff1a;系统分…

STM32 FreeRTOS 任务挂起和恢复---实验

实验目标 学会vTaskSuspend( )、vTaskResume( ) 任务挂起与恢复相关API函数使用&#xff1a; start_task:用来创建其他的三个任务。 task1&#xff1a;实现LED1每500ms闪烁一次。 task2&#xff1a;实现LED2每500ms闪烁一次。 task3&#xff1a;判断按键按下逻辑&#xff0c;KE…

YOLO系列代码

Test-Time Augmentation TTA (Test Time Augmentation)是指在test过程中进行数据增强。其思想非常简单&#xff0c;就是在评测阶段&#xff0c;给每个输入进行多种数据增广变换&#xff0c;将一个输入变成多个输入&#xff0c;然后再merge起来一起输出&#xff0c;形成一种ens…

《自动驾驶与机器人中的SLAM技术》ch4:基于预积分和图优化的 GINS

前言&#xff1a;预积分图优化的结构 1 预积分的图优化顶点 这里使用 《自动驾驶与机器人中的SLAM技术》ch4&#xff1a;预积分学 中提到的散装的形式来实现预积分的顶点部分&#xff0c;所以每个状态被分为位姿&#xff08;&#xff09;、速度、陀螺零偏、加计零偏四种顶点&am…

docker 部署confluence

1.安装docker的过程就不说了。 2.下载镜像。 docker pull cptactionhank/atlassian-confluence:7.4.0 docker images 3.下载pojie 包。 https://download.csdn.net/download/liudongyang123/90285042https://download.csdn.net/download/liudongyang123/90285042https://do…

前端实习第二个月小结

时间飞快&#xff0c;第一次实习已经过去两个多月&#xff0c;作一些简单的总结和分享。 注&#xff1a;文章整体会比较轻松&#xff0c;提及的经历、经验仅作参考。 一、关于实习/工作内容 1、工作内容 近期做的是管理后台方面的业务&#xff0c;技术栈&#xff1a;前端re…

搭建一个基于Spring Boot的书籍学习平台

搭建一个基于Spring Boot的书籍学习平台可以涵盖多个功能模块&#xff0c;例如用户管理、书籍管理、学习进度跟踪、笔记管理、评论和评分等。以下是一个简化的步骤指南&#xff0c;帮助你快速搭建一个基础的书籍学习平台。 — 1. 项目初始化 使用 Spring Initializr 生成一个…

dl学习笔记:(4)简单神经网络

&#xff08;1&#xff09;单层正向回归网络 bx1x2z100-0.2110-0.05101-0.051110.1 接下来我们用代码实现这组线性回归数据 import torch x torch.tensor([[1,0,0],[1,1,0],[1,0,1],[1,1,1]], dtype torch.float32) z torch.tensor([-0.2, -0.05, -0.05, 0.1]) w torch.…

OpenHarmony-7.IDL工具

IDL 工具 1.openharmony IDL工具 在OpenHarmony中&#xff0c;当应用/系统服务的客户端和服务端进行IPC&#xff08;Inter-Process Communication&#xff09;跨线程通信时&#xff0c;需要定义双方都认可的接口&#xff0c;以保障双方可以成功通信&#xff0c;OpenHarmony ID…

openssl s_server源码剥离

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…

前端小案例——网页井字棋

前言&#xff1a;我们在学习完了HTML、CSS和JavaScript之后&#xff0c;就会想着使用这三个东西去做一些小案例&#xff0c;不过又没有什么好的案例让我们去练手&#xff0c;本篇文章就提供里一个案例——网页井字棋。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可…

Leetcode 983. 最低票价 动态规划

原题链接&#xff1a;Leetcode 983. 最低票价 class Solution { public:int mincostTickets(vector<int>& days, vector<int>& costs) {int n days.size();int last days[n - 1];int dp[last 1];map<int, int> mp;for (auto x : days)mp[x] 1;dp…

Java中的 锁现象演示和原理解释 多线程操作资源类 八种案例 同步方法 静态方法 对象锁 类锁

目录 面试题 案例 1 标准访问有 ab 两个线程 案例 2 其中一个同步方法暂停 3 秒 案例 3 新增普通方法 案例 4 创建两个对象 案例 5 两个静态同步方法 一个对象 案例 6 两个静态同步方法 两个对象 案例 7 一个静态同步方法 一个普通同步方法 一个对象 案例 8 一个静态同…