K8S的HPA机制

wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.4.4/components.yaml  支持k8s 1.8+
k8s.gcr.io/metrics-server/metrics-server:v0.4.4
root@slave002:/opt/HPA# ls
components-v0.4.4.yaml  metrics-server-v0.4.4.tar.gz
root@slave002:/opt/HPA# kubectl get po -A
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE
kube-system   metrics-server-589d49d679-k2mft            1/1     Running   0          25s

  

root@slave002:/opt/HPA# kubectl top pod -A
NAMESPACE     NAME                                       CPU(cores)   MEMORY(bytes)   
kube-system   calico-kube-controllers-84f55b8f87-dvw68   1m           13Mi            
kube-system   calico-node-2cv99                          10m          77Mi            
kube-system   calico-node-7fmcm                          10m          77Mi            
kube-system   calico-node-mmw6t                          9m           77Mi            
kube-system   coredns-b4f9bd8bc-nwnws                    2m           11Mi            
kube-system   metrics-server-589d49d679-k2mft            1m           16Mi 

  

root@slave002:/opt/HPA# kubectl top node 
W1024 22:19:18.674685   47653 top_node.go:119] Using json format to get metrics. Next release will switch to protocol-buffers, switch early by passing --use-protocol-buffers flag
NAME              CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
192.168.192.151   75m          3%     1064Mi          33%       
192.168.192.152   64m          3%     899Mi           28%       
192.168.192.153   71m          3%     941Mi           29%

  

root@slave002:/opt/HPA# kubectl autoscale  deploy chuan-tomcat-app1-deployment --min=2 --max=5 --cpu-percent=10 -nchuan
horizontalpodautoscaler.autoscaling/chuan-tomcat-app1-deployment autoscaled

  

root@slave002:/opt/HPA# kubectl get hpa -nchuan
NAME                            REFERENCE                                  TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
chuan-tomcat-app1-deployment   Deployment/chuan-tomcat-app1-deployment   0%/10%    2         5         2          77s

  

root@slave002:/opt/HPA# kubectl delete hpa chuan-tomcat-app1-deployment -nchuan
horizontalpodautoscaler.autoscaling "chuan-tomcat-app1-deployment" deleted

  

root@slave002:/opt/k8s-data/yaml/chuan/tomcat-app1# cat hpa.yaml 
apiVersion: autoscaling/v1 
kind: HorizontalPodAutoscaler
metadata:
  namespace: chuan
  name: chuan-tomcat-app1-podautoscaler
  labels:
    app: chuan-tomcat-app1
    version: v2beta1
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: chuan-tomcat-app1-deployment 
  minReplicas: 2
  maxReplicas: 20
  targetCPUUtilizationPercentage: 60

  释义:

scaleTargetRef:目标作用对象,可以是Deployment、ReplicationController或ReplicaSet。
targetCPUUtilizationPercentage:期望每个Pod的CPU使用率都为50%,该使用率基于Pod设置的CPU Request值进行计算,例如该值为200m,那么系统将维持Pod的实际CPU使用值为100m。
minReplicas和maxReplicas:Pod副本数量的最小值和最大值,系统将在这个范围内进行自动扩缩容操作, 并维持每个Pod的CPU使用率为50%。
为了使用autoscaling/v1版本的HorizontalPodAutoscaler,需要预先安装Metrics Server,用于采集Pod的CPU使用率。
root@slave002:/opt/k8s-data/yaml/chuan/tomcat-app1# kubectl get po -nchuan
NAME                                             READY   STATUS    RESTARTS   AGE
chuan-tomcat-app1-deployment-748499bc7d-qz2sq   1/1     Running   0          9m30s
chuan-tomcat-app1-deployment-748499bc7d-s4jsf   1/1     Running   0          10m

        --horizontal-pod-autoscaler-cpu-initialization-period duration   The period after pod start when CPU samples might be skipped. (default 5m0s)  5分钟后cpu资源指标才会被采纳

root@slave002:/opt/k8s-data/yaml/chuan/tomcat-app1# kubectl get po -nchuan
NAME                                             READY   STATUS        RESTARTS   AGE
chuan-tomcat-app1-deployment-748499bc7d-pm4s2   1/1     Terminating   0          5m51s
chuan-tomcat-app1-deployment-748499bc7d-qz2sq   1/1     Running       0          30m
chuan-tomcat-app1-deployment-748499bc7d-rr2wn   1/1     Terminating   0          5m51s 
chuan-tomcat-app1-deployment-748499bc7d-s4jsf 1/1 Running 0 32m

  

 

posted @ 2021-11-28 20:21  gg888666  阅读(267)  评论(0编辑  收藏  举报