Kubernetes HPA管理
一、HPA介紹
??HPA的全稱為(Horizontal Pod Autoscaling),通俗的理解下HPA就是對deployment進行擴縮容的一個管理機制,他會監測pod的cpu和memory的使用情況,當cpu或memory達到一個值,為了能夠使服務正常運行,他會進行擴容增加pod,來分擔壓力,當pod的使用比較空閑穩定的時候,他會自動的進行縮容,但縮容的速度遠遠慢于擴容的速度,防止pod再一次達到閾值。
這是hpa擴容的原理圖,其中有個metrics Server的API,HPA控制器通過Metrics Server的API(Heapster的API或聚合API)獲取這些數據,基于用戶定義的擴縮容規則進行計算,得到目標Pod副本數量。
?
二、介紹HPA三個版本
我們在使用apiVersion創建資源的時候,有些版本分為很多種,就像hpa,他就有三個版本
第一個版本:autosacling/v1 這是最簡單的一個版本,所涵蓋的內容比較少,但是使用簡單,如果做一些簡單的擴縮容可以使用此版本
第二個版本:autoscaling/v2beta1 這是在v1的基礎上演變的 多了一個metric模塊
第三個版本: autoscaling/v2beta2 這個版本就比較詳細了,內容也比較豐富,主要新增了擴縮容靈敏度的控制,下文的例子就是使用的這個版本
我們如果想知道一個apiversion有多少版本的時候 可以使用:? kubectl api-versions |grep 版本名稱
kubectl?api-resources 還可以查看所有資源
同時kubectl explain? hpa --api-version=autoscaling/v2beta2
還可以指定查看某一個版本下的具體信息
三、HPA實例
我們首先創建一個deploy 然后再創建hpa指定這個deploy進程擴縮容管理
apiVersion: apps/v1
kind: Deployment
metadata:
? creationTimestamp: null
? labels:
? ? app: web
? name: web
spec:
? replicas: 1
? selector:
? ? matchLabels:
? ? ? app: web
? strategy: {}
? template:
? ? metadata:
? ? ? creationTimestamp: null
? ? ? labels:
? ? ? ? app: web
? ? spec:
? ? ? containers:
? ? ? - image: nginx:latest
? ? ? ? name: nginx
? ? ? ? imagePullPolicy: IfNotPresent
? ? ? ? ports:
? ? ? ? - containerPort: 80
? ? ? ? resources:
? ? ? ? ? limits:
? ? ? ? ? ? cpu: "10m"
? ? ? ? ? ? memory: 20Mi
? ? ? ? ? requests:
? ? ? ? ? ? cpu: "10m"
? ? ? ? ? ? memory: 20Mi
status: {}
# 注意 在創建deploy的時候一定要限制pod的資源配額 資源配額在前幾章也說過
下面創建HPA
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
? name: web-hpa
spec:
? minReplicas: 1 #最少副本
? maxReplicas: 1000 #最多副本
? scaleTargetRef: #指定目標
? ? apiVersion: apps/v1
? ? kind: Deployment
? ? name: web
? metrics: #對哪個資源進行監控
? - type: Resource
? ? resource:
? ? ? name: cpu
? ? ? target:
? ? ? ? type: Utilization
? ? ? ? averageUtilization: 80
? behavior: #這里是重點? 設置擴縮容的靈敏度
? ? scaleUp:
? ? ? stabilizationWindowSeconds: 5 # 在五秒之內進程擴容
? ? ? policies:
? ? ? - type: Percent? #按照百分比進行擴容
? ? ? ? value: 900? #90%
? ? ? ? periodSeconds: 5 %每五秒擴容一次
對于behavior下的polices模塊我們還可以這樣寫
policies:
- type: pods
? value: 1
每次只新增一個pod
polices:
- type: pods
? value: 0
禁止HPA擴容 (這條我認為沒有什么意義,我們使用hpa就是為了進行擴縮容)
結語:
以上就是HPA簡單的介紹和操作流程
總結
以上是生活随笔為你收集整理的Kubernetes HPA管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机网络的发展及其现状分析,计算机网络
- 下一篇: 品优购商城——手机详情页(作业)