本文首發於個人公衆號 Linux雲計算網絡(id: cloud_dev),專一於乾貨分享,號內有 10T 書籍和視頻資源,後臺回覆「1024」便可領取,歡迎你們關注,二維碼文末能夠掃。php
Hi,你們好,歡迎你們和我一塊兒學 K8S,這是系列第 12 篇。apache
上一篇咱們瞭解了 Pod 的手動擴容和縮容,本篇來看看自動的方式。編程
K8S 做爲一個集羣式的管理軟件,自動化、智能化是免不了的功能。Google 在 K8S v1.1 版本中就加入了這個 Pod 橫向自動擴容的功能(Horizontal Pod Autoscaling,簡稱 HPA)。api
HPA 與以前的 Deployment、Service 同樣,也屬於一種 K8S 資源對象。網絡
HPA 的目標是但願經過追蹤集羣中全部 Pod 的負載變化狀況,來自動化地調整 Pod 的副本數,以此來知足應用的需求和減小資源的浪費。工具
HAP 度量 Pod 負載變化狀況的指標有兩種:雲計算
如何統計和查詢這些指標,要依託於一個組件——Heapster。Heapster 會監控一段時間內集羣內全部 Pod 的 CPU 利用率的平均值或者其餘自定義的值,在知足條件時(好比 CPU 使用率超過 80% 或 下降到 10%)會將這些信息反饋給 HPA 控制器,HPA 控制器就根據 RC 或者 Deployment 的定義調整 Pod 的數量。spa
HPA 實現的方式有兩種:配置文件和命令行命令行
這種方式是經過定義 yaml 配置文件來建立 HPA,以下是基本定義:code
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) minReplicas
和 maxReplicas
字段定義 Pod 可伸縮的數量範圍。這個例子中擴容最高不能超過 10 個,縮容最低不能少於 1 個。
(3)targetAverageUtilization
指定 CPU 使用率,也就是自動擴容和縮容的觸發條件,當 CPU 使用率超過 50% 時會觸發自動動態擴容的行爲,當回落到 50% 如下時,又會觸發自動動態縮容的行爲。
這種方式就是經過 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++編程技術等內容,歡迎你們關注。