簡體   English   中英

HPA在GKE節點自動縮放期間無法獲取CPU指標

[英]HPA could not get CPU metric during GKE node auto-scaling

集群信息:

  • Kubernetes版本:1.12.8-gke.10
  • 正在使用的雲:GKE
  • 安裝方法: gcloud
  • 主機操作系統:(機器類型)n1-standard-1
  • CNI和版本:默認
  • CRI和版本:默認

在節點擴展期間,HPA無法獲取CPU指標。

同時, kubectl top podkubectl top node輸出為: Error from server (ServiceUnavailable): the server is currently unable to handle the request (get pods.metrics.k8s.io) Error from server (ServiceUnavailable): the server is currently unable to handle the request (get nodes.metrics.k8s.io)

有關更多詳細信息,我將向您顯示問題的發生流程:

  1. 突然,許多請求到達GKE服務器。 (使用測試工具)
  2. HPA檢測到當前的CPU使用率超過目標CPU使用率(50%),因此請嘗試按比例擴大Pod。
  3. 創建Pod時,發生Insufficient CPU警報Insufficient CPU ,因此GKE嘗試逐步擴大節點規模。
  4. 很快,HPA無法獲得指標,並且kubectl top nodekubectl top pod沒有得到響應。 -這時找到一個或多個OutOfcpu吊艙,並且有多個吊艙
    ContainerCreating (從Pending狀態開始)。
  5. 節點放大完成並且經過了一段時間(大約幾分鍾)后,HPA開始成功獲取CPU指標,並嘗試根據該指標進行放大/縮小。
  6. 當節點縮小時,也會發生相同的情況。

這將導致吊艙縮放停止,並在響應客戶端請求時引發一些故障。 這正常嗎?

我認為,即使在節點擴展期間,HPA也應在運行的Pod上獲取CPU指標(或其他指標),以跟蹤當前的最佳Pod大小。 因此,在節點擴展完成后,HPA會立即創建必要的Pod(而不是增量創建)。

我可以使集群像這樣工作嗎?

也許您的節點用盡了一個內存或CPU資源,但是有一些配置映射描述了如何根據集群大小擴展插件。 您需要在kube-system名稱空間中編輯metrics-server-config配置映射:

kubectl edit cm/metrics-server-config -n kube-system

您應該添加

baseCPU
cpuPerNode
baseMemory
memoryPerNode

到NannyConfiguration, 在這里您可以找到廣泛的手冊:

同樣,heapster也遭受着相同的OOM問題:太多的Pod無法處理分配的資源中的所有指標,請相應地修改heapster的配置映射:

kubectl edit cm/heapster-config -n kube-system

暫無
暫無

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

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