HPA集群控制器
Horizontal Pod Autoscaling,簡稱HPA,是Kubernetes中實現POD水平自動伸縮的功能,HPA可以可以基于CPU利用率或其他應用程序提供的度量指標自動縮放POD的數量
Pod水平自動伸縮特性由Kubernetes API資源和控制器實現,資源決定了控制器的行為。控制器會周期性的獲取平均率,并與目標值相比較后來調整副本數量
限制
-不適合用于無法伸縮的對象,比如:DaemonSets
資源控制器創建
[root@master ~]# vim myhpa.yaml --- apiVersion: apps/v1 kind: Deployment metadata:name: myweb #集群名稱 spec:selector:matchLabels:app: apache #后端標簽app:apachereplicas: 1 #只有1個PODtemplate:metadata:labels:app: apache #標簽spec:containers:- name: apacheimage: 192.168.1.100:5000/myos:httpdports:- containerPort: 80 resources: #計算此計算器所需的資源requests: #描述所需的最小計算資源量cpu: 200m #計量單位,可以看作100millirestartPolicy: Always--- apiVersion: v1 kind: Service metadata:name: web-service spec:ports:- protocol: TCPport: 80targetPort: 80selector:app: apachetype: ClusterIP--- apiVersion: extensions/v1beta1 kind: Ingress metadata:name: my-appannotations:kubernetes.io/ingress.class: "nginx" spec:backend:serviceName: web-serviceservicePort: 80--- apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler #HPA資源內型 metadata:name: myweb #HPA名稱 spec: minReplicas: 1 #最小保留POD數量maxReplicas: 3 #最大保留POD數量scaleTargetRef:apiVersion: apps/v1kind: Deploymentname: myweb #監視deployment名稱targetCPUUtilizationPercentage: 50 #CPU度量值 [root@master ~]# kubectl apply -f hpa-example.yaml [root@master ~]# kubectl get hpa NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE myweb Deployment/myweb 0%/50% 1 3 1 15m當容器的cpu占用超過 50% 的時候,自動擴展一個POD,依次擴展,一直到最大值
如果cpu訪問不足 50% 的時候,每 300s 縮減一個 POD 節點,直到最小值時停止
訪問測試可以使用鏡像內提供的 info.php增加系統負載,從而查看狀態信息
訪問地址? http://ip.xx.xx.xx/info.php?id=1000000
[root@master ~]# kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.254.0.1 <none> 443/TCP 5d19h myapache ClusterIP 10.254.105.21 <none> 80/TCP 4d1h myheadless ClusterIP None <none> 80/TCP 3d23h mynodeport NodePort 10.254.207.195 <none> 80:31341/TCP 3d23h web-service ClusterIP 10.254.196.125 <none> 80/TCP 7m23s [root@master ~]# kubectl get pod NAME READY STATUS RESTARTS AGE myweb-7f89fc7b66-99xfx 1/1 Running 0 115s myweb-7f89fc7b66-lvrhs 1/1 Running 0 7m29s [root@master ~]# kubectl get hpa NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE myweb Deployment/myweb 70%/50% 1 3 2 7m34s [root@master ~]# [root@master ~]# kubectl get hpa -w #時實觀看總結
- 上一篇: k8s安装Prometheus
- 下一篇: k8命令,pod的启动流程与资源文件书写