基于KEDA的Kubernetes自动缩放机制

【架构】基于事件的 Kubernetes 弹性扩展 KEDA 提供了强大的工具,帮助你在 Kubernetes 中更有效地管理工作负载,根据实时事件动态调整应用程序的规模。异步事件驱动的工作负载: KEDA 特别适用于处理异步事件,如消息队列中的消息、Kafka 主题中的事件等。KEDA 可以根据配置的触发器和规则,自动调整工作负载的规模,使之适应不同的负载情况,减轻运维负担。在这个例子中,冷却时间是 60 秒,确保在上一次调整后的 10 秒内不会再次触发调整。通过发送一些消息到你的 Azure 队列,观察你的应用是否根据队列中的消息数量动态扩展或缩减。 阅读详情

KEDA以事件驱动的方式实现Kubernetes Pod的动态自动扩容机制,以满足不同的负载需求,从而提高应用可伸缩性和弹性。原文: Dynamic Scaling with Kubernetes Event-driven Autoscaling (KEDA)

alt

Kubernetes是容器编排平台的事实标准,已经彻底改变了部署和管理应用的方式。对应用进行有效扩容的关键挑战之一是确保基础设施适应工作负载的动态需求,这就是Kubernetes pod autoscaling发挥作用的地方,可以根据预定义指标自动调整pod数量。虽然Kubernetes提供了内置的自动缩放功能,但Kubernetes事件驱动自动缩放(KEDA, Kubernetes Event-driven Autoscaling)项目提供了更强大的解决方案来增强和扩展自动缩放功能。本文将探讨Kubernetes和KEDA中内置自动缩放的区别,重点介绍KEDA的优缺点,并提供真实用例来展示其潜力。

Kubernetes内置自动缩放

Kubernetes提供了一种称为水平Pod自动缩放(HPA,Horizontal Pod Autoscaler)的本地自动缩放机制。HPA可以定义指标(例如CPU利用率或基于指标服务器的自定义指标),从而让Kubernetes根据指定阈值自动调整pod副本数量。这种内置解决方案适用于许多场景,但在事件驱动的工作负载或基于自定义指标的扩展方面存在局限性。

Kubernetes事件驱动自动缩放(KEDA,Kubernetes Event-driven Autoscaling)

KEDA(Kubernetes事件驱动自动缩放)项目,是一个开源项目,将Kubernetes的自动缩放功能扩展到更广泛的工作负载。KEDA充当事件源(如消息队列或流平台)与Kubernetes之间的桥梁,支持基于事件驱动触发器的自动扩容。利用KEDA,可以实时扩展应用pod,对传入事件做出反应并优化资源利用率。

alt
KEDA优缺点

与Kubernetes内置的自动缩放功能相比,KEDA有如下优势:

  • 事件驱动扩容: KEDA支持基于各种事件源的自动扩容,可以处理突发工作负载或适应不可预测的需求峰值。
  • 支持自定义指标: 与HPA不同,KEDA可以基于自定义指标进行扩容,从而在定义特定于应用需求的扩容触发器时提供更多灵活性。
  • 资源效率: 当没有工作负载时,KEDA可以缩容到零副本,从而有效降低资源消耗和成本。
  • 可扩展架构: KEDA与各种事件源无缝集成,并通过可插拔架构进行扩展,可以根据特定需求进行调整。

尽管有很多好处,但使用KEDA也有一些注意事项:

  • 额外的复杂性: 集成和配置KEDA需要额外设置和管理开销,需要根据应用复杂性进行权衡。
  • 学习曲线: KEDA引入了新的概念和工具,对于新的项目开发人员和运维人员来说,可能需要一些学习。
alt
通过Helm 3安装KEDA
  1. 添加Helm repo
helm repo add kedacore https://kedacore.github.io/charts
  1. 更新Helm repo
helm repo update
  1. 安装 KEDAHelm chart
kubectl create namespace keda helm install keda kedacore/keda --namespace keda
用例

基于Azure服务总线队列长度的Kubernetes pod自动伸缩

在这个用例中,我们有一个微服务应用程序,负责处理来自Azure服务总线队列的消息。工作负载是偶尔发生的,根据传入流量具有不同的队列长度。我们希望动态扩展Kubernetes pod,以便通过KEDA有效的处理消息。

前置条件

  1. 安装了KEDA的Kubernetes集群。
  2. 访问队列的Azure服务总线和凭据。

步骤1: 部署示例应用程序。首先部署应用,侦听Azure服务总线队列并处理消息。我们用一个简单的Python应用程序进行演示。

# app.py

from azure.servicebus import ServiceBusClient, ServiceBusMessage

def process_message(message):
    # Process the message here
    print(f"Processing message: {message}")

# Configure Azure Service Bus connection string
connection_string = "your-connection-string"

# Create a Service Bus client
service_bus_client = ServiceBusClient.from_connection_string(connection_string)

# Create a receiver to listen to the queue
receiver = service_bus_client.get_queue_receiver(queue_name="your-queue-name")

# Start receiving and processing messages
with receiver:
    for message in receiver:
        process_message(message)
        message.complete()  # Mark the message as completed after processing

将上述代码部署为Kubernetes中的容器化应用程序。

步骤2: 配置KEDA支持自动缩放。为了使KEDA能够监控队列长度并触发自动缩放,需要创建ScaledObject并进行相应部署。

# scaledobject.yaml

apiVersion: keda.k8s.io/v1alpha1
kind: ScaledObject
metadata:
  name: queue-scaler
spec:
  scaleTargetRef:
    deploymentName: your-deployment-name
  triggers:
    - type: azure-servicebus
      metadata:
        connection: "your-connection-string"
        queueName: "your-queue-name"
        name: queue-length-trigger
        queueLength: "5"  # Scale when the queue length is greater than or equal to 5
# deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: your-deployment-name
spec:
  replicas: 1  # Initial number of replicas
  template:
    spec:
      containers:
        - name: your-container-name
          image: your-container-image

将上述YAML文件应用到Kubernetes集群,以创建ScaledObject和部署。

步骤3: 现在,当消息到达Azure服务总线队列时,KEDA将监控队列长度并根据定义的阈值触发自动缩放(在本例中,阈值为队列长度大于或等于5)。

可以通过监控部署的副本数量来观察自动伸缩:

kubectl get deployment your-deployment-name

当队列长度超过定义的阈值时,KEDA将自动扩展副本数量以处理增加的工作负载。一旦队列长度减少,KEDA将相应的减少副本,从而优化资源利用率。

这个用例演示了KEDA如何根据Azure服务总线队列的长度自动扩展Kubernetes pod。通过利用KEDA的可扩展性和事件驱动的扩展功能,可以确保有效的资源利用和对不同工作负载的响应。示例说明了KEDA在基于自定义指标动态调整pod数量方面的强大功能,使其成为一种有价值的扩展工具。

结论

Kubernetes pod自动伸缩是有效管理动态工作负载的基本特性。Kubernetes通过HPA提供了内置的自动缩放功能,KEDA为事件驱动缩放和自定义指标提供了强大扩展。通过将KEDA整合到Kubernetes集群中,可以释放实时自动扩展的潜力,使应用程序能够无缝适应不断变化的需求。虽然KEDA引入了额外的复杂性,但有助于提高应用集群的资源效率、可扩展性和可伸缩性。


你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。为了方便大家以后能第一时间看到文章,请朋友们关注公众号"DeepNoMind",并设个星标吧,如果能一键三连(转发、点赞、在看),则能给我带来更多的支持和动力,激励我持续写下去,和大家共同成长进步!

- END -

本文由 mdnice 多平台发布

FPGA为什么能实现逻辑运算 目录1.CPLD如何实现逻辑运算2.FPGA如何实现逻辑运算3.理解FPGA开发流程中的综合(Synthesis)4.如何判断语句是否可以综合 首先回答题目问题:FPGA的逻辑结果不是算出来的,是查出来的。也就是说FPGA的逻辑功能实现是基于查找表的。 1.CPLD如何实现逻辑运算 CPLD,复杂可编程逻辑器件。逻辑阵列的每一个交叉点都可以通过编程实现导通从而实现与逻辑,乘积项选择矩阵可实现或逻辑。也就是CPLD的组合逻辑都是直接通过内部的与非门实现的。 2.FPGA如何实现逻辑运算 FPGA,现场可编程 阅读详情

相关推荐

Karpenter和KEDA在Kubernetes上实现CPU自动扩缩容

在现代云原生应用程序中,自动扩缩容是一个至关重要的特性。它能够根据实际负载自动调整资源,既能保证应用性能,又能优化成本。本文将详细介绍如何使用Karpenter和KEDA在Kubernetes集群中实现节点和Pod级别的CPU自动扩缩容。

探索云原生与智能化驱动下的安全运维新范式。关注DevSecOps、可观测性、AIOps等前沿领域,与您共赴技术前沿。 700

腾讯云k8s集群KEDA安装与介绍

KEDA安装与介绍 一,什么是KEDA? KEDA 是 Kubernetes 基于事件驱动的自动伸缩工具,通过 KEDA 我们可以根据需要处理的事件数量来驱动 Kubernetes 中任何容器的扩展。KEDA 可以直接部署到任何 Kubernetes 集群中和标准的组件一起工作。 在 Kubernetes 中 KEDA 有两个关键的角色: 扩展客户端:用于激活和停用 Deployments 来扩展到配置的副本,并在没有事件的情况下将副本缩减回零。 Metrics Server:一种 Metrics

兰辉 2685

别再纠结选哪个向量库了!我用Spring AI + Redis Stack 7.2,5分钟搞定企业知识库RAG原型

本文介绍了如何利用Spring AI和Redis Stack 7.2快速构建企业级RAG应用,解决向量数据库选型难题。Redis Stack 7.2集成了RediSearch模块,支持向量相似性搜索,具备高性能、低成本、零学习成本等优势,特别适合中小团队快速搭建知识库系统。通过实战代码示例,展示了从环境准备到核心功能实现的完整流程。

weixin_29061041的博客 263

k8s使用keda监听mq进行弹性伸缩容器

背景 RabbitMQ队列 RabbitMQ是一种称为消息代理或队列管理器的消息队列软件. 简单地说: 这是一个可以定义队列的软件, 应用程序可以连接到队列并将消息传输到该队列上。 RabbitMQ使用者被部署为接受RabbitMQ服务器生成的队列并模拟执行的部署。 原理 使用触发器创建ScaledObject,监听mq队列消息 1,创建ScaledObject后,KEDA控制器将自动同步配置并开始监视上面创建的Rabbitmq-consumer,而其会监听对应的mq队列消息数 2,而Sc

兰辉 3019

海康威视摄像头网线连接笔记本电脑,客户端提示:1连接设备失败。设备不在线或网络原因引起的连接超时等。(HCNetSDK.dll[7].)解决方案

1.环境 电脑:联想笔记本电脑(win10系统) 摄像头:海康威视DS-2CD3T20D-i5,4mm 连接方式:直接用网线将摄像头和摄像头连接 2.问题: 客户端出现如下提示: 3. 解决流程: 1.确认网线是否有问题:我的网线指示灯常亮,并且设备能够被搜索到,只是一直显示离线 2.按照网上教程直接配置摄像头的ip地址与电脑同一网段:登录失败。 错误码为 HCNetSDK.dll[7].(连接设备失败。设备不在【海康威视吧】_百度贴吧 失败了,没有反应 3.查看有线网卡的地

weixin_48911487的博客 3万+

Benchmark系列——基本概念和分类

本文主要介绍了Benchmark的基本概念和分类情况。

Bluetangos的博客 8424

K8s自动扩缩容工具KEDA发布2.0版本,全面升级应用扩展能力

一年前,红帽和微软共同发布了Kubernetes自动扩缩容工具KEDA 1.0,而现在官方强化KEDA的扩缩容器,发布第2个主要更新KEDA 2.0,能支持更多种类的触发器,更方便地自动...

weixin_38320674的博客 1335

51单片机基础知识

前言 周末闲着无聊,以后定时更新一期关于51单片机的学习案例,以供大家平时参考使用。至于单片机,你可以理解为人的大脑,而人各项身体器官的运作需要意识给到大脑,然后大脑再驱动我们的中枢神经进行相应的动作,这里的意识可以理解为我们要写的程序,而人的器官相当于各种输出设备,例如我们以后要学的LED、电机、各种传感器等等。学好单片机能让你找到一份相对不错的工作,当然越可观的东西也是要付出相应努力的。 一、51单片机是什么? 通常我们一说到 51 单片机,指的都是兼容IntelMCS-51体系架构的一系列单片机,而

qq_43537819的博客 6889

KEDA - 基于Kubernetes事件驱动的自动缩放

事件驱动的计算并不是什么新生事务。数据库世界中的人们使用数据库触发器已有多年了。这个概念很简单: 每当您添加,更改或删除数据时,都会触发一个事件以执行各种功能。新的事件是这些类型的事件和触发器在其他领域的应用程序中激增,例如自动扩展,自动修复,容量规划等。 事件驱动架构的核心是对系统上的各种事件做出反应并采取相应的行动。 自动缩放(以一种或其他方式实现自动化)已成为几乎所有云平台中不可或缺的组成部...

yevvzi的博客 2164

游戏开发实战:用UE4 Marschner模型打造次世代头发渲染(附Shader代码解析)

本文详细解析了如何在UE4中使用Marschner模型实现次世代头发渲染,包括Shader代码逐行解读与参数调优。通过对比传统Kajiya-Kay模型,展示了Marschner模型在物理精确性和视觉效果上的优势,并提供了性能优化与实战技巧,帮助技术美术师提升游戏角色渲染品质。

weixin_28223453的博客 231

Wordpress实战之第二章安装wordpress 软件需要的软件

使用下载并安装phpstudy面版工具 wget -O install.sh?https://notdocker.xp.cn/install.sh?&& sudo bash install.sh 2.安装成功如下 ==============运行状态========================= webpanel stop phpstudy running =================...

安全参透之旅 606

KEDA 使用教程

KEDA 使用教程 【免费下载链接】keda KEDA 是一个开源的 Kubernetes 事件驱动的自动化 Kubernetes 应用程序。 * Kubernetes 事件驱动的自动化 Kubernetes 应用程序 * 有什么特点:易于使用、支持多种云原生应用程序和平台、用于 Kubernetes 应用程序的事件...

gitblog_00588的博客 1231

Linux 隐藏进程

这种方式属于DKoM(Direct Kernel Object Manipulation)攻击方式了,即直接内核对象操作技术。关于第一种hook方式可以参考上一篇文章。最后推荐一个rootkit工具。

chi's blog 2040

KEDA:基于事件驱动扩展K8S应用的深度实践

新钛云服已累计为您分享773篇技术干货为什么我们要自动扩展应用程序?作为 SRE,需要保证应用弹性和高可用性。因此,自动缩放是我们需要的必须功能。通过自动缩放,我们能确保工作负载能够高效的地处理业务流量。在本文中,我们将详细描述如何使用 KEDA 以事件驱动的方式自动扩展 Kubernetes 应用程序。什么是KEDA?KEDA 是一个轻量级的开源 Kubernetes 事件驱动的自动缩放器,De...

NewTyun的博客 1066

MFC C++ 中开发 PLC 通信客户端

OPC UA | 工业标准化通信 | `open62541`(开源OPC UA库)或 `UA-.NET` 封装 | 跨平台、安全可靠,支持复杂数据类型 |- 连接句柄(`modbus_t*`/`UA_Client*`/`TS7Client*`)不可跨线程共享,需为每个线程创建独立连接。Modbus 是工业常用协议,分 **RTU**(串口)和 **TCP**(以太网)两种模式,以下以 Modbus TCP 为例。s=Tag`),复杂类型需解析扩展对象。

寒寒豆豆软件公司的博客 129

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Kubernetes-事件驱动的POD自动缩放(KEDA)

什么是KEDA? KEDA目前是cncf下的沙箱项目。 KEDA是基于Kubernetes的事件驱动自动缩放器。使用KEDA,您可以根据需要处理的事件数量来驱动Kubernetes中任何容器的扩展。 KEDA是一个单一用途的轻量级组件,可以添加到任何Kubernetes集群中。KEDA与标准Kubernetes组件(如Horizo​​ntal Pod Autoscaler)配合使用,并且可以扩展功能而不会覆盖或复制。使用KEDA,您可以显式映射要使用事件驱动的比例的应用程序,而其他应用程序仍可以继续运

kozazyh的专栏 610

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

基于 keda事件驱动在Kubernete 集群上的弹性自动缩放应用

由于我们在文件中定义的promethues收集的服务的自定义指定是DubboRequestLatency,因此我们可以在根据PromQL语句在promethues的界面查询下当前的值是多少。kill掉模拟的cpu脚本,将cpu的使用率降下来,等待一会,结合阿里云界面,会发现pod进入缩容状态。由于达到设定的开始时间后,但是我们有配置服务的伸缩窗口,所以在等待60秒后,开始扩容。同样在到达设定的结束时间后,在等待伸缩窗口期(180秒)后,服务进行缩容,由于。,所以会恢复到最原始的副本数。...

最美dee时光的博客 1135

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

KEDA 实战详细指南:基于事件的 Kubernetes 弹性扩展

KEDA(Kubernetes Event-driven Autoscaling)是一个强大的开源工具,可用于根据事件触发器自动调整 Kubernetes 中的工作负载。本指南将深入介绍如何在实际项目中使用 KEDA,以实现基于事件的自动扩展,提高弹性和效率。选择条件异步事件驱动的工作负载: KEDA 特别适用于处理异步事...

测试0901-1 1388

为什么 KEDA 是 Kubernetes 自动伸缩的游戏规则改变者

KEDA 可以根据几乎任何指标提供商可以想象的任何指标轻松扩展,并且在世界上一些最大的公司的云生产中大规模运行 介绍 在这篇文章中,我将介绍 Kubernetes 事件驱动的自动缩放 (KEDA) 使 Kubernetes 管理员能够完成什么以及如何开始。 先决条件: Kubernetes 集群 1.5 或以上版本 Kubernetes 集群的管理员权限 什么是 KEDA Kubernetes 事件驱动自动缩放 (KEDA) 是对内置 Kubernetes Horizontal Pod Autosca

技术宅,专注云原生、Go、Linux、Java等技术分享,原创文章、效率工具、实战解决方案!关注我,了解互联网动态,学 IT 不迷路 706

HPA 还是 KEDA,如何在 Kubernetes 中更有效的使用弹性扩缩容?

Kubernetes 有非常广泛的话题。但是构建云原生应用程序时最常见的问题还是弹性扩缩容。什么是缩放?我们应该怎么做才能实施有效的扩展实践?Kubernetes 在这方面对我们有帮助吗?...

u012516914的专栏 1176

自动缩放Kubernetes上的Kinesis Data Streams应用程序

想要学习如何在Kubernetes上自动缩放您的Kinesis Data Streams消费者应用程序,以便节省成本并提高资源效率吗?本文提供了一个逐步指南,教您如何实现这一目标。通过利用Kubernetes对Kinesis消费者应用程序进行自动缩放,您可以从其内置功能中受益,例如水平Pod自动缩放器(Horizontal Pod Autoscaler)。

616

keda--kubernetes实现扩缩容的利器

第1章 kubernetes原生的扩缩容介绍 引用链接:https://mp.weixin.qq.com/s/mRwvZBVfWPYvE7hERbGMTA https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/ https://github.com/kubernetes-sigs/custom-metrics-apiserver https://kubernetes.io/zh/docs/tasks/run-ap

process的博客 1051

Kubernetes HPA 很好用吧,那是你还没遇上更强的 KEDA (基于事件驱动的自动伸缩)...

公众号关注「奇妙的 Linux 世界」设为「星标」,每天带你玩转 Linux !Kubernetes 彻底火了,这把开源之火烧到了所有互联网大厂。许多分析机构认为,以 Kubernete...

easylife206的专栏 2072

一文看懂K8s集群的按需缩放、灵活降本

KEDA的HTTP加载项会暴露出一个CRD,借此我们可以描述应用程序的扩展方式。metadata:spec:port: 80replicas:min: 0max: 10该文件会指示拦截器将有关的请求转发给podinfo服务。其中还包含了需要扩展的部署的名称,本例中为podinfo。提交了上述定义后,Pod被删除了!为何会这样?

AKAMAI_CHINA的博客 1025

KEDA 项目教程

KEDA 项目教程 【免费下载链接】keda KEDA 是一个开源的 Kubernetes 事件驱动的自动化 Kubernetes 应用程序。 * Kubernetes 事件驱动的自动化 Kubernetes 应用程序 * 有什么特点:易于使用、支持多种云原生应用程序和平台、用于 Kubernetes 应用程序的事件...

gitblog_01111的博客 1034

Keda HTTP Add-On:弹性扩缩容的利器

Keda HTTP Add-On:弹性扩缩容的利器 项目介绍 Keda HTTP Add-On 是一个专为 KEDA (Kubernetes Event Driven Autoscaling) 设计的扩展组件,旨在通过HTTP请求处理来实现基于事件的自动缩放功能。它允许开发者利用HTTP协议的灵活性,根据自定义的HTTP端点触发条件来动态调整 Kubernetes 应用的实例数,这一特性特别适合...

gitblog_00732的博客 932
上一篇: 5分钟搞懂K8S Pod Terminating/Unknown故障排查
下一篇: 什么是质量工程?
俞凡 DeepNoMind
博客等级 码龄21年 1651粉丝 339原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

俞凡 DeepNoMind

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值