网站首页 > 开源技术 正文
你还在用K8S自带的 内存或者CPU 相关的 AutoScaling 么?
探索 KEDA(Kubernetes 事件驱动的自动缩放),这是一种适用于 Kubernetes 工作负载的有效自动缩放解决方案,并了解 KEDA 架构及其优势。
手动缩放正在慢慢成为过去。目前,自动缩放是常态,部署到 Kubernetes 集群中的组织可以获得内置的自动缩放功能,如 HPA(水平容器自动缩放)和 VPA(垂直容器自动缩放)。但这些解决方案有局限性。例如,HPA 很难根据内存或 CPU 使用率以外的指标将 Pod 的数量缩减为零或(取消)缩放 Pod。因此,引入了 KEDA(Kubernetes 事件驱动的自动缩放)来解决自动扩展 K8s 工作负载中的一些挑战。
什么是KEDA?
KEDA 是一个轻量级的开源 Kubernetes 事件驱动的自动缩放器,DevOps、SRE 和 Ops 团队使用它来根据外部事件或触发器水平扩展 Pod。KEDA 有助于扩展本机 Kubernetes 自动缩放解决方案的功能,这些解决方案依赖于标准资源指标,如 CPU 或内存。您可以将 KEDA 部署到 Kubernetes 集群中,并使用自定义资源定义 (CRD) 管理 Pod 的扩展。
KEDA 基于 Kubernetes HPA 构建,根据来自 AWS SQS、Kafka、RabbitMQ 等事件源的信息扩展 Pod。这些事件源使用缩放程序进行监视,缩放程序根据为其设置的规则激活或停用部署。KEDA 缩放器还可以为特定事件源提供自定义指标,帮助 DevOps 团队观察与其相关的指标。
与开发运营工具链的互操作性
截至目前,KEDA 支持 59 个内置缩放器和 <> 个外部缩放器。外部缩放器包括 KEDA HTTP、KEDA Scaler for Oracle DB 等。使用外部事件作为触发器有助于高效的自动缩放,尤其是对于支付网关或订单系统等消息驱动的微服务。此外,由于 KEDA 可以通过开发与任何数据源的集成来扩展,因此它可以轻松适应任何 DevOps 工具链。
KEDA架构和组件
如开头所述,KEDA 和 HPA 协同工作以实现自动缩放。正因为如此,KEDA 只需要几个组件即可开始使用。
KEDA组件
参见图。答:让我们探索一下 KEDA 的一些组成部分、
事件源
这些是 KEDA 更改 Pod 数的外部事件/触发器源。Prometheus,RabbitMQ和Apache Pulsar是事件源的一些例子。
缩放器 使用缩放器监视事件源,缩放器
提取指标并根据事件触发部署或作业的缩放。
指标适配器 指标适配器
从缩放器获取指标,并将其转换或调整为 HPA/控制器组件可以理解的形式。
控制器 控制器
/操作员根据适配器提供的指标进行操作,并带来 ScaledObject 中指定的所需部署状态(请参阅下文)。
KEDA CRD
KEDA 提供四种自定义资源来执行自动扩展功能:ScaledObject、ScaledJob、TriggerAuthentication 和 ClusterTriggerAuthentication。
ScaledObject 和 ScaledJob
ScaledObject 表示事件源和对象之间的映射,并指定部署、状态集、作业或 K8s 集群中任何自定义资源的扩展规则。同样,ScaledJob 用于为 Kubernetes 作业指定扩展规则。
下面是一个 ScaledObject 示例,它基于 Prometheus 指标配置 KEDA 自动缩放。在这里,部署对象“keda-test-demo3”根据 Prometheus 指标中的触发阈值 (50) 进行缩放。KEDA 将在最小 1 和最大 10 之间缩放副本数,如果指标值低于阈值,则缩减到 0 个副本。
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: prometheus-scaledobject
namespace: demo3
spec:
scaleTargetRef:
apiVersion: argoproj.io/v1alpha1
kind: Rollout
name: keda-test-demo3
triggers:
- type: prometheus
metadata:
serverAddress: http://<prometheus-host>:9090
metricName: http_request_total
query: envoy_cluster_upstream_rq{appId="300", cluster_name="300-0", container="envoy", namespace="demo3", response_code="200" }
threshold: "50"
idleReplicaCount: 0
minReplicaCount: 1
maxReplicaCount: 10
KEDA 组件如何工作?
在任何 Kubernetes 集群上部署 KEDA 都很容易,因为它不需要覆盖或复制现有功能。一旦部署并且组件准备就绪,基于事件的扩展将从外部事件源开始(参见图)。A). 缩放器将根据 ScaledObject 中设置的源持续监视事件,并在发生任何触发事件时将指标传递给指标适配器。然后,指标适配器调整指标并将其提供给控制器组件,然后控制器组件根据 ScaledObject 中设置的扩展规则纵向扩展或缩减部署。
请注意,KEDA 通过将副本数扩展到零或 1 来激活或停用部署。然后,它会触发 HPA 根据群集资源将工作负载数量从 1 扩展到 n。
KEDA 部署和演示
KEDA 可以通过 Helm 图表、操作员中心或 YAML 声明部署在 Kubernetes 集群中。例如,以下方法使用 Helm 部署 KEDA。
#Adding the Helm repo
helm repo add kedacore https://kedacore.github.io/charts
#Update the Helm repo
helm repo update
#Install Keda helm chart
kubectl create namespace keda
helm install keda kedacore/keda --namespace keda
猜你喜欢
- 2024-10-03 科达智慧能源肯尼亚KEDA SOLAR公司成立
- 2024-10-03 KEDAARA CAPITAL计划筹集17亿美元,这将成为印度有史以来规模最大的私募股权基金
- 2024-06-22 水草小百科—柯达岗辣椒榕
- 2024-06-22 KEDACOM科达H900视频会议终端
- 2024-06-22 微软为容器扩展 Azure 服务组合,发展基于微服务的云原生应用程序
- 2024-06-22 如何使用 KEDA 自动缩放 Grafana Loki Queries
- 2024-06-22 为什么应该使用Dapr来构建事件驱动的微服务?
- 2024-06-22 4位创造吉尼斯纪录的“奇人”,80多岁爷爷成最年长DJ
- 2024-06-22 Kubernetes使用Keda进行弹性伸缩,更合理利用资源
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)