PaaS服務供應商Atlassian開源其內部使用的Kubernetes自動擴展調節工具Escalator,以Go語言撰寫的Escalator最強大的功能在於,不只能提供先占式運算資源擴展,預備為即將出現的容器騰出空間,以便需要時可以快速啟動,同時也能反向快速縮減閒置的虛擬機器。

Escalator的意思為手扶梯,人們透過手扶梯可以更快的往上或是往下移動,而Atlassian透過Escalator,則能更快速的向上擴展或是向下縮減運算資源。

Atlassian作為一個PaaS服務供應商,在容器管理的需求很明確,他們需要在運算基礎架構上排程並放置使用者的Pods,除了在極端情況硬體發生故障時,服務要仍維持可用外,在平時的資源管理上,基礎架構以及應用程式要具可擴展彈性,以解決高峰使用負載,另外,當虛擬機器不在使用時,能自動關閉以節省成本。

Atlassian提到,他們透過建立Kubernetes平臺,很快速的就把批次處理工作負載移植到了Kubernetes Pods上,但同時也發現,在大量的並行工作出現時,叢集不再能快速的擴展或是縮減。

當叢集達到容量上限,使用者通常需要等候數分鐘,待其他Kubernetes工作節點(Worker)啟動載入服務,而這個過程並非好現象,因為許多程式並無法等待這麼長的延遲,通常導致服務失敗。Atlassian表示,這個最根本的原因是Kubernetes的叢集自動擴展調節器缺少了一個關鍵的功能,那就是在叢集達到運算容量上限時,先占地擴展運算節點,或是更簡單的功能,維持固定的緩衝容量。

此外,在運算容量縮減的部分,預設的縮減機制不夠快速,Atlassian表示,這在小叢集個位數節點不是個問題,但是當節點數量到達數百以上,那情況便會完全不同,因為這些為數不少又不再需要的閒置運算資源,會瞬間燒掉非常多錢。

為了解決運算資源快速縮放的問題,Atlassian著手開發能針對批次工作負載進行水平擴展的自動擴展調節器,其目標有兩項,除了以緩衝容量達到先占式擴展外,還要在不需要虛擬機器時,可以快速的縮減,另外,為了他們的營運團隊,他們還想要讓這個自動調節器支援Prometheus 指標,於是Escalator便誕生了。

一開始Escalator只是用來彌補Kubernetes預設的自動擴展調節器,Atlassian用了簡單的概念,就達成了第一個目標,他們為不再使用的節點上標記,這些標記稱之為汙點,自動擴展調節器便能快速的排除這些受汙染的節點。另外,他們讓使用者設定閾值,調整緩衝的運算資源。兩個主要目標都達成後,Atlassian讓Escalator自動化,並完全取代Kubernetes的標準自動擴展調節器。

Atlassian提到,現在他們向社群釋出的Escalator,便是他們最新的版本,過去必須花費3分鐘等待EC2運算實體啟動加入叢集,現在只要幾秒鐘就能完成,用戶可以隨意地指定適合的緩衝百分比。另外,過去他們因閒置節點浪費的成本也都消失了,現在每天省下數百到數千美元。當然,Escalator也支援營運團隊需要的Prometheus指標。

熱門新聞

Advertisement