簡體   English   中英

Kubernetes:將 HPA 與來自其他 pod 的指標一起使用

[英]Kubernetes: using HPA with metrics from other pods

我有:

  1. 在 k8s 中部署服務 A 和 B
  2. 普羅米修斯堆棧

我想在服務 B 的度量 m1 更改時擴展服務 A。 我發現但或多或少不適合的解決方案:

  1. 我可以使用規范的以下部分為服務 A 定義 HPA:
  - 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(顯然沒有這個)

  1. 在 prometheus-adapter 中定義自定義指標,從服務 B 的 pod 查詢 m1 指標。它更合適,但看起來像解決方法,因為我已經有一個指標 m1

  2. 外部指標也是如此

我覺得我錯過了一些東西,因為它看起來不像是一個不現實的案例:) 所以,請告訴我如何在 k8s 中按另一個服務的度量來擴展一個服務?

我決定提供一個社區 Wiki 答案,以幫助面臨類似問題的其他人。

Horizontal Pod Autoscaler是一項 Kubernetes 功能,允許基於一個或多個監控指標擴展應用程序。
我們可以在Horizontal Pod Autoscaler 文檔中找到:

Horizontal Pod Autoscaler 會根據觀察到的 CPU 利用率(或者,在自定義指標支持下,根據一些其他應用程序提供的指標)自動擴展復制 controller、部署、副本集或有狀態集中的 Pod 數量。

我們可以在 Horizontal Pod Autoscaler 中使用三組指標

  • 資源指標:Pod 和節點的預定義資源使用指標(CPU 和內存)。
  • 自定義指標:與 Kubernetes object 關聯的自定義指標。
  • 外部指標:與 Kubernetes object 無關的自定義指標。

任何 HPA 目標都可以根據擴展目標中pod (或容器)的資源使用情況進行擴展。 CPU 利用率指標是一個resource metric ,您可以指定除 CPU 之外的其他資源指標(例如內存)。 這似乎是最簡單、最基本的擴展方法,但我們可以通過使用custom metricsexternal metrics

custom metricsexternal metrics之間有一個主要區別(請參閱: 用於自動縮放工作負載的自定義和外部指標):

自定義指標和外部指標彼此不同:

在 Kubernetes 中運行的應用程序會報告自定義指標。 來自未在集群上運行的應用程序或服務報告的外部指標,但其性能會影響您的 Kubernetes 應用程序。

總而言之,在我看來,在上述情況下使用custom metrics是可以的,我沒有找到任何其他合適的方法來完成這項任務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM