From c441dce948df76a98bd9ed9e5dc849cf095c90e8 Mon Sep 17 00:00:00 2001 From: roc Date: Wed, 24 Apr 2024 14:20:11 +0800 Subject: [PATCH] update at 2024-04-24 14:20:11 --- .../hpa-with-custom-metrics/keda.md | 19 +++++++++++++++++++ .../prometheus-adapter.md} | 4 ++-- .../autoscaling/keda/prometheus.md | 10 ---------- content/best-practices/sidebars.ts | 14 +++++++++++++- 4 files changed, 34 insertions(+), 13 deletions(-) create mode 100644 content/best-practices/autoscaling/hpa-with-custom-metrics/keda.md rename content/best-practices/autoscaling/{hpa-with-custom-metrics.md => hpa-with-custom-metrics/prometheus-adapter.md} (99%) diff --git a/content/best-practices/autoscaling/hpa-with-custom-metrics/keda.md b/content/best-practices/autoscaling/hpa-with-custom-metrics/keda.md new file mode 100644 index 0000000..7f97524 --- /dev/null +++ b/content/best-practices/autoscaling/hpa-with-custom-metrics/keda.md @@ -0,0 +1,19 @@ +# KEDA 方案 + +## 概述 + +KEDA 是一个开源的 Kubernetes 基于事件驱动的弹性伸缩器(参考 [KEDA 介绍](../keda/overview))),官方内置了几十种常用的触发器,其中也包含 prometheus 触发器,即可以根据 proemtheus 中的监控数据进行伸缩。 + +## Prometheus 触发器使用方法 + +参考 [KEDA 基于 Prometheus 自定义指标的弹性伸缩](../keda/prometheus) 。 + +## 与 prometheus-adapter 对比 + +[prometheus-adapter](https://github.com/kubernetes-sigs/prometheus-adapter) 也支持相同的能力,即根据 Prometheus 中的监控指标数据进行伸缩,但相比 KEDA 的方案有以下不足: + +* 每次新增自定义指标,都要改动 `prometheus-adapter` 的配置,且改配置是集中式管理的,不支持通过 CRD 管理,配置维护起来比较麻烦。 +* `prometheus-adapter` 的配置语法晦涩难懂,不能直接写 `PromQL`,需要学习一下 `prometheus-adapter` 的配置语法,有一定的学习成本,而 KEDA 的 prometheus 配置则非常简单,指标可以直接写 `PromQL`。 +* `prometheus-adapter` 只支持根据 Prometheus 监控数据进行伸缩,而对于 KEDA 来说,Prometheus 只是众多触发器中的一种。 + +综上,推荐使用 KEDA 方案。 diff --git a/content/best-practices/autoscaling/hpa-with-custom-metrics.md b/content/best-practices/autoscaling/hpa-with-custom-metrics/prometheus-adapter.md similarity index 99% rename from content/best-practices/autoscaling/hpa-with-custom-metrics.md rename to content/best-practices/autoscaling/hpa-with-custom-metrics/prometheus-adapter.md index 72b5617..4bb79d2 100644 --- a/content/best-practices/autoscaling/hpa-with-custom-metrics.md +++ b/content/best-practices/autoscaling/hpa-with-custom-metrics/prometheus-adapter.md @@ -1,4 +1,4 @@ -# HPA 使用自定义指标进行伸缩 +# prometheus-adapter 方案 Kubernetes 默认提供 CPU 和内存作为 HPA 弹性伸缩的指标,如果有更复杂的场景需求,比如基于业务单副本 QPS 大小来进行自动扩缩容,可以考虑自行安装 [prometheus-adapter](https://github.com/DirectXMan12/k8s-prometheus-adapter) 来实现基于自定义指标的 Pod 弹性伸缩。 @@ -309,4 +309,4 @@ httpserver-6f94475d45-6c5xm 0/1 ContainerCreating 0 1s httpserver-6f94475d45-wl78d 0/1 ContainerCreating 0 1s ``` -扩容正常则说明已经实现 HPA 基于业务自定义指标进行弹性伸缩。 \ No newline at end of file +扩容正常则说明已经实现 HPA 基于业务自定义指标进行弹性伸缩。 diff --git a/content/best-practices/autoscaling/keda/prometheus.md b/content/best-practices/autoscaling/keda/prometheus.md index 36fd84c..5716a52 100644 --- a/content/best-practices/autoscaling/keda/prometheus.md +++ b/content/best-practices/autoscaling/keda/prometheus.md @@ -4,16 +4,6 @@ KEDA 支持 `prometheus` 类型的触发器,即根据自定义的 PromQL 查询到的 Prometheus 指标数据进行伸缩,完整配置参数参考 [KEDA Scalers: Prometheus](https://keda.sh/docs/latest/scalers/prometheus/),本文将给出使用案例。 -## 对比 prometheus-adapter - -[prometheus-adapter](https://github.com/kubernetes-sigs/prometheus-adapter) 也支持相同的能力,即根据 Prometheus 中的监控指标数据进行伸缩,但相比 KEDA 的方案有以下不足: - -* 每次新增自定义指标,都要改动 `prometheus-adapter` 的配置,且改配置是集中式管理的,不支持通过 CRD 管理,配置维护起来比较麻烦。 -* `prometheus-adapter` 的配置语法晦涩难懂,不能直接写 `PromQL`,需要学习一下 `prometheus-adapter` 的配置语法,有一定的学习成本,而 KEDA 的 prometheus 配置则非常简单,指标可以直接写 `PromQL`。 -* `prometheus-adapter` 只支持根据 Prometheus 监控数据进行伸缩,而对于 KEDA 来说,Prometheus 只是众多触发器中的一种。 - -综上,推荐使用 KEDA 方案。 - ## 案例:基于 istio 的 QPS 指标伸缩 如果你使用 isito,业务 Pod 注入了 sidecar,会自动暴露一些七层的监控指标,最常见的是 `istio_requests_total`,可以通过这个指标计算 QPS。 diff --git a/content/best-practices/sidebars.ts b/content/best-practices/sidebars.ts index cc21ecf..75c04bf 100644 --- a/content/best-practices/sidebars.ts +++ b/content/best-practices/sidebars.ts @@ -70,7 +70,19 @@ const sidebars: SidebarsConfig = { }, items: [ 'autoscaling/hpa-velocity', - 'autoscaling/hpa-with-custom-metrics', + { + type: 'category', + label: 'HPA 使用自定义指标进行伸缩', + collapsed: true, + link: { + type: 'generated-index', + slug: '/autoscaling/hpa-with-custom-metrics' + }, + items: [ + 'autoscaling/hpa-with-custom-metrics/prometheus-adapter', + 'autoscaling/hpa-with-custom-metrics/keda', + ] + }, { type: 'category', label: '事件驱动弹性伸缩(KEDA)',