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

本文首發於個人公衆號 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 負載變化狀況的指標有兩種:雲計算

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

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

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

  1. 配置文件

這種方式是經過定義 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) 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++編程技術等內容,歡迎你們關注。

相關文章
相關標籤/搜索