[英]Kubernetes: using HPA with metrics from other pods
我有:
我想在服務 B 的度量 m1 更改時擴展服務 A。 我發現但或多或少不適合的解決方案:
- type: Object
object:
metric:
name: m1
describedObject:
apiVersion: api/v1
kind: Pod
name: certain-pod-of-service-B
current:
value: 10k
從技術上講,它會起作用。 但它不適合 k8s 的動態特性。 我也不能在 HPA 中使用 pods metric(metrics: - type: Pods pods:) 因為它會為服務 A 的 pod 請求 m1 metric(顯然沒有這個)
在 prometheus-adapter 中定義自定義指標,從服務 B 的 pod 查詢 m1 指標。它更合適,但看起來像解決方法,因為我已經有一個指標 m1
外部指標也是如此
我覺得我錯過了一些東西,因為它看起來不像是一個不現實的案例:) 所以,請告訴我如何在 k8s 中按另一個服務的度量來擴展一個服務?
我決定提供一個社區 Wiki 答案,以幫助面臨類似問題的其他人。
Horizontal Pod Autoscaler是一項 Kubernetes 功能,允許基於一個或多個監控指標擴展應用程序。
我們可以在Horizontal Pod Autoscaler 文檔中找到:
Horizontal Pod Autoscaler 會根據觀察到的 CPU 利用率(或者,在自定義指標支持下,根據一些其他應用程序提供的指標)自動擴展復制 controller、部署、副本集或有狀態集中的 Pod 數量。
我們可以在 Horizontal Pod Autoscaler 中使用三組指標:
任何 HPA 目標都可以根據擴展目標中pod (或容器)的資源使用情況進行擴展。 CPU 利用率指標是一個resource metric
,您可以指定除 CPU 之外的其他資源指標(例如內存)。 這似乎是最簡單、最基本的擴展方法,但我們可以通過使用custom metrics
或external metrics
。
custom metrics
和external metrics
之間有一個主要區別(請參閱: 用於自動縮放工作負載的自定義和外部指標):
自定義指標和外部指標彼此不同:
在 Kubernetes 中運行的應用程序會報告自定義指標。 來自未在集群上運行的應用程序或服務報告的外部指標,但其性能會影響您的 Kubernetes 應用程序。
總而言之,在我看來,在上述情況下使用custom metrics
是可以的,我沒有找到任何其他合適的方法來完成這項任務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.