Kubernetes 筆記 012 Pod 的自動擴容與縮容


本文首發於我的公眾號 Linux雲計算網絡(id: cloud_dev),專注於干貨分享,號內有 10T 書籍和視頻資源,后台回復「1024」即可領取,歡迎大家關注,二維碼文末可以掃。

Hi,大家好,歡迎大家和我一起學 K8S,這是系列第 12 篇。

上一篇我們了解了 Pod 的手動擴容和縮容,本篇來看看自動的方式。

K8S 作為一個集群式的管理軟件,自動化、智能化是免不了的功能。Google 在 K8S v1.1 版本中就加入了這個 Pod 橫向自動擴容的功能(Horizontal Pod Autoscaling,簡稱 HPA)。

HPA 與之前的 Deployment、Service 一樣,也屬於一種 K8S 資源對象。

HPA 的目標是希望通過追蹤集群中所有 Pod 的負載變化情況,來自動化地調整 Pod 的副本數,以此來滿足應用的需求和減少資源的浪費。

HAP 度量 Pod 負載變化情況的指標有兩種:

  • CPU 利用率(CPUUtilizationPercentage)
  • 自定義的度量指標,比如服務在每秒之內的請求數(TPS 或 QPS)

如何統計和查詢這些指標,要依托於一個組件——Heapster。Heapster 會監控一段時間內集群內所有 Pod 的 CPU 利用率的平均值或者其他自定義的值,在滿足條件時(比如 CPU 使用率超過 80% 或 降低到 10%)會將這些信息反饋給 HPA 控制器,HPA 控制器就根據 RC 或者 Deployment 的定義調整 Pod 的數量。

HPA 實現的方式有兩種:配置文件和命令行

  1. 配置文件

這種方式是通過定義 yaml 配置文件來創建 HPA,如下是基本定義:

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: php-apache
  namespace: default
spec:
  scaleTargetRef:               # (1)
    kind: Deployment   
    name: php-apache
  minReplicas: 1                # (2)
  maxReplicas: 10
  targetAverageUtilization: 50  # (3)

文件 kind 類型是 HorizontalPodAutoscaler,其中有 3 個地方需要額外注意下:

(1)scaleTargetRef 字段指定需要管理的 Deployment/RC 的名字,也就是提前需要存在一個 Deployment/RC 對象。

(2) minReplicasmaxReplicas 字段定義 Pod 可伸縮的數量范圍。這個例子中擴容最高不能超過 10 個,縮容最低不能少於 1 個。

(3)targetAverageUtilization 指定 CPU 使用率,也就是自動擴容和縮容的觸發條件,當 CPU 使用率超過 50% 時會觸發自動動態擴容的行為,當回落到 50% 以下時,又會觸發自動動態縮容的行為。

  1. 命令行

這種方式就是通過 kubectl autoscale 命令來實現創建 HPA 對象,實現自動擴容和縮容行為。比如和上面的例子等價的命令如下:

kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10

通過參數來引入各個字段。

OK,本文就到這里,更多實踐的例子大家可以參考 K8S 官網。下文我們將會探索 K8S 的容錯機制。


我的公眾號 「Linux雲計算網絡」(id: cloud_dev) ,號內有 10T 書籍和視頻資源,后台回復 「1024」 即可領取,分享的內容包括但不限於 Linux、網絡、雲計算虛擬化、容器Docker、OpenStack、Kubernetes、工具、SDN、OVS、DPDK、Go、Python、C/C++編程技術等內容,歡迎大家關注。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM