1. <em id="vzzs9"></em>
      <tbody id="vzzs9"></tbody>

    2. <span id="vzzs9"></span>
      <progress id="vzzs9"></progress>
      首頁 運維干貨Kubernetes自動伸縮機制,為你降本增效

      Kubernetes自動伸縮機制,為你降本增效

      運維派隸屬馬哥教育旗下專業運維社區,是國內成立最早的IT運維技術社區,歡迎關注公眾號:yunweipai
      領取學習更多免費Linux云計算、Python、Docker、K8s教程關注公眾號:馬哥linux運維

      從技術上講,容器化應用能該幫助組織更具有成本的優勢,但Kubernetes到處布滿了成本陷阱,可能會使你超出預算。幸運的是,有一些策略可以控制云成本,自動伸縮就是其中之一。Kubernetes帶有三個內置的自動伸縮機制來幫助你做到這一點。它們配合得越好,運行應用程序的成本就越低。

      Kubernetes自動伸縮機制,為你降本增效插圖

      1.Pod水平自動擴縮(HPA)

      Pod 水平自動擴縮(HorizontalpodAutoscaler) 可以基于CPU利用率自動擴縮 ReplicationController、Deployment、ReplicaSet 和 StatefulSet 中的pod數量。除了CPU利用率,也可以基于其他應程序提供的 自定義度量指標 來執行自動擴縮。

      生產環境中,許多應用程序的使用情況會出現波動,這意味著實時添加或刪除pod副本會帶來更好的成本收益。這就是 HorizontalpodAutoscaler (HPA) 通過自動執行此操作來提供幫助的地方。

      何時使用 HPA?

      它非常適合擴展無狀態應用程序,當然也可以用于有狀態應用。如果將 HPA 與Cluster Autoscaler(CA)結合使用,能夠為經常變化的工作負載獲得最大的成本節約。當pod數量減少時,這將減少活動節點的數量。

      HPA 是如何工作的?

      HPA 監控pod以了解pod副本的數量是否需要更改。為了確定這一點,它采用每個pod指標值的平均值,并檢查刪除或添加副本,是否會使該值更接近目標。

      例如,如果你部署的目標CPU利用率為50%,而現在你有五個pod在那里運行,則平均CPU利用率為 75%。為了使pod平均值更接近你的目標,HPA 控制器將增加三個副本。

      HPA 最佳實踐

      • 為 HPA 提供每個pod資源指標:需要在Kubernetes集群中安裝 metrics-server。
      • 為每個容器配置值:HPA 根據觀察到的pod的CPU利用率值(來自單個pod的資源請求的百分比)做出擴展決策。如果你沒有包含某些容器的值,則計算將不準確并可能導致出現糟糕的擴展決策。
      • 使用自定義指標:HPA 擴展決策的另一個來源是自定義指標。HPA 支持兩種類型的自定義指標:pod 指標和對象指標。確保使用正確的目標類型。你還可以使用來自第三方監控系統的外部指標。

      Kubernetes自動伸縮機制,為你降本增效插圖1

      2. Pod垂直自動擴縮 (VPA)

      Vertical Pod Autoscaler(VPA),即垂直 Pod 自動擴縮容,它根據容器資源使用率自動設置 CPU 和 內存 的requests,從而允許在節點上進行適當的調度,以便為每個 Pod 提供適當的資源。它既可以縮小過度請求資源的容器,也可以根據其使用情況隨時提升資源不足的容量。

      這種自動縮放機制增加和減少了pod容器的CPU和內存資源請求,以使分配的集群資源與實際使用情況保持一致。VPA 還需要訪問Kubernetes指標服務器,因為它僅替換由副本控制器管理(Replication Controller)的pod。

      提示:

      如果你的 HPA 配置沒有使用CPU或內存來設置其擴展目標,請同時使用 VPA 和 HPA。

      何時使用 VPA?

      工作負載可能會在某個時候遇到高利用率,但不斷增加其請求限制,不是一個好辦法。你可能會浪費CPU或內存資源并限制運行它們的節點。將工作負載分布到多個應用程序實例有時候也是很棘手的,這就是 Vertical Pod Autoscaler 的幫助所在。

      VPA 是如何工作的?

      VPA 部署由三個組件組成:

      • Recommender : 監控資源利用率并計算目標值,也就是檢查歷史資源利用率和當前使用的模式,并推薦一個理想的資源請求值
      • Updater : 檢查pods 資源限制是否需要更新
      • Admission Controller:在創建pod時覆蓋其資源請求

      由于Kubernetes不允許更改正在運行的pod的資源限制,因此 VPA 首先終止舊的pod,然后將更新的值注入新的pod規范。

      VPA 最佳實踐

      避免在Kubernetes的1.11版本之前使用。

      使用updateMode:Off運行 VPA,以了解你要自動縮放的pod的資源使用情況。這將為你提供推薦的CPU和內存請求,也是以后調整的重要基礎。

      如果工作負載經常出現高使用率和低使用率的峰值,則 VPA 可能會過于激進,因為它可能會不斷地一遍又一遍地替換pod。在這種情況下,使用HPA 效果更好。

      3. Cluster Autoscaler(CA)

      Cluster Autoscaler 在K8S集群中,通過增加/刪除其中的Node,達到集群擴縮容的目的。由于 Cluster Autoscaler 控制器工作在基礎設施級別,因此它需要具備添加和刪除基礎設施的權限,你應該安全地管理這些授權信息(例如,遵循最小權限原則)。

      何時使用集群自動擴縮器?

      如果你希望通過動態擴展節點數量,以最大化當前集群利用率來優化成本,則此自動擴展機制非常有效。對于旨在擴展和滿足動態需求的工作負載而言,它是一款出色的工具。

      Cluster Autoscaler 如何工作?

      它會檢查不可調度的pod,然后計算是否可以整合當前部署的所有pod,以在較少數量的節點上運行它們。如果 Cluster Autoscaler 識別出具有可以重新調度到集群中其他節點的pod的節點,它會驅逐它們并刪除備用節點。

      集群自動擴縮器最佳實踐

      • 部署 Cluster Autoscaler 時,要與之相匹配的Kubernetes版本一起使用。(兼容性列表)。
      • 檢查集群節點是否具有相同的CPU和內存容量:否則集群自動縮放器將無法工作,因為它假設集群中的每個節點都具有相同的容量。
      • 確保自動縮放的pod都具有指定的資源請求。

      總結

      自動縮放機制對于控制云成本非常有價值,但它們需要大量的手動配置:

      • 防止 HPA 和 VPA 沖突:你需要檢查你的 HPA 和 VPA 策略是否最終發生沖突。密切關注成本,以防止它們失控。
      • 平衡三種機制:你需要平衡三種機制的組合,以確保工作負載支持峰值負載,并在負載較低時將成本保持在最低水平。

      參考:https://www.kubernetes.org.cn/9443.html

      (版權歸原作者所有,侵刪)

      本文鏈接:http://www.abandonstatusquo.com/40047.html

      網友評論comments

      發表評論

      您的電子郵箱地址不會被公開。

      暫無評論

      Copyright ? 2012-2022 YUNWEIPAI.COM - 運維派 京ICP備16064699號-6
      掃二維碼
      掃二維碼
      返回頂部
      久久久久亚洲国内精品|亚洲一区二区在线观看综合无码|欧洲一区无码精品色|97伊人久久超碰|一级a爱片国产亚洲精品