Azure

如何在資源耗盡之前自動縮放 Azure Kubernetes 節點池

  • November 10, 2020

我今天在 Azure Kubernetes 上使用我的自動縮放設置進行了一些測試。我注意到,當觸發自動縮放時,下一個節點需要一段時間才能啟動,因此最後一個 pod 必須等待很長時間才能被調度。我想讓它在我的伺服器達到某個門檻值時添加新節點,但仍然可以在已經執行的節點上安排 Pod。那可能嗎?

為了回答如何觸發自動縮放以使 Pod 不必等待新節點的問題,本文描述了一種稱為“Pause Pods”的優雅策略:

Pod Priority 和 Preemption是 Kubernetes 功能,允許您為 Pod 分配優先級。簡而言之,這意味著當集群資源不足時,它可以搶占(刪除)低優先級的 Pod,以便為等待調度的高優先級的 Pod 騰出空間。使用 pod 優先級,我們可以執行一些虛擬 pod,僅用於在集群中保留額外空間,這些空間將在“真實”pod 需要執行時立即釋放。理想情況下,用於預訂的 pod 不應該使用任何資源,而只是坐在那裡什麼都不做。您可能聽說過已在 Kubernetes 中用於不同目的的暫停容器。pause 容器的一個屬性是它主要只是呼叫pause系統呼叫,這意味著“休眠直到收到信號”。

正常 pod 和過度配置 pod

總而言之,我們可以在集群中執行一堆暫停 Pod,其唯一目的是保留空間來欺騙集群自動縮放器過早地添加額外的節點。由於這些 pod 的優先級低於正常 pod,因此一旦資源變得稀缺,它們就會從集群中被逐出。然後暫停的 Pod 將進入掛起狀態,這反過來又會觸發集群自動擴縮器來增加容量。總的來說,這是一種在集群中始終擁有動態緩衝區的非常優雅的方式。

引用自:https://serverfault.com/questions/1041334