當(dāng)CPU負載壓力過了一定的量時详囤,pod會自動擴容桨武,當(dāng)負載壓力下降時肋拔,會自動減少pod
需要依賴heapster監(jiān)控服務(wù)
1. 導(dǎo)入heapster監(jiān)控包
for n in `ls *.tar.gz`;do docker load -i $n ;done
docker tag docker.io/kubernetes/heapster_grafana:v2.6.0 10.0.0.11:5000/heapster_grafana:v2.6.0
docker tag docker.io/kubernetes/heapster_influxdb:v0.5 10.0.0.11:5000/heapster_influxdb:v0.5
docker tag docker.io/kubernetes/heapster:canary 10.0.0.11:5000/heapster:canary
上傳監(jiān)控服務(wù)的配置文件
數(shù)據(jù)的來源 : node節(jié)點kubelete的cadvisor服務(wù)
influxdb 數(shù)據(jù)庫服務(wù)
grafana 出圖,可視化工具
heapster 采集數(shù)據(jù)
創(chuàng)建資源
vim heapster-controller.yaml 把總是跟新鏡像刪掉或者改成imagePullPolicy: IfNotPresent
kubectl create -f .
2.創(chuàng)建hpa
###一定要限制CPU
vim vim k8s_deploy.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-deployment
namespace: lixin
spec:
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: 10.0.0.11:5000/nginx:1.13
ports:
- containerPort: 80
resources:
limits:
cpu: 100m
requests:
cpu: 100m
kubectl create namespace lixin
kubectl create -f .
創(chuàng)建彈性伸縮規(guī)則
kubectl autoscale -n lixin deployment nginx-deployment --max=8 --min=1 --cpu-percent=8
autoscale 自動伸縮規(guī)則
-n lixin 指定命名空間
deployment 指定資源類型
nginx-deployment 指定資源類型名字
--max=8 最多能起多少個pod
--min=1 最少
--cpu-percent=8 cpu使用百分比 (在生產(chǎn)上最好在60左右)
### 創(chuàng)建之后會立即生效 因為沒有負載壓力之前創(chuàng)建的pod是三個現(xiàn)在變成了一個
kubectl get all -n lixin -o wide
進行壓力測試
yum install httpd-tools -y
ab -n 3000000 -c 100 172.16.20.16/index.html
-n 一次發(fā)起多少請求
-c 每次多少并發(fā)
- 看以上圖CPU開始負載過高已經(jīng)自動擴容
-
當(dāng)壓力釋放時 pod會慢慢減少