基础知识官网上面都有。。这里只记录实验操作记录。
HorizontalPodAutoscaler(简称 HPA ) 自动更新工作负载资源(例如 Deployment 或者 StatefulSet), 目的是自动扩缩工作负载以满足需求。
水平扩缩意味着对增加的负载的响应是部署更多的 Pod。 这与 “垂直(Vertical)” 扩缩不同,对于 Kubernetes, 垂直扩缩意味着将更多资源(例如:内存或 CPU)分配给已经为工作负载运行的 Pod。
如果负载减少,并且 Pod 的数量高于配置的最小值, HorizontalPodAutoscaler 会指示工作负载资源(Deployment、StatefulSet 或其他类似资源)缩减。
资源整合,自动伸缩扩容pod,增加负载
前置条件,1,配置了metrics-server, 2,pod配置了资源配额 resources
1,配置deployment资源

[root@master01 ~]# kubectl apply  -f deploy.yaml 
deployment.apps/autoscale configured

[root@master01 ~]# kubectl get pods -o wide
NAME                        READY   STATUS    RESTARTS   AGE   IP               NODE     NOMINATED NODE   READINESS GATES
autoscale-fcd84f869-gh7t4   1/1     Running   0          10s   10.244.196.140   node01   <none>           <none>
[root@master01 ~]# cat deploy.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: autoscle
  name: autoscale
spec:
  replicas: 1
  selector:
    matchLabels:
      app: auto
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: auto
    spec:
      containers:
      - image: deis/hpa-example 
        imagePullPolicy: IfNotPresent
        name: hpa
        resources:  
          requests: 
            cpu: 400m
status: {}

2,创建service资源关联deployment

[root@master01 ~]# kubectl expose  deployment  autoscale  --port=80 --target-port=80 
service/autoscale exposed

3,访问service-ip

OK![root@master01 ~]# kubectl get svc 
NAME         TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)   AGE
autoscale    ClusterIP   10.1.74.113   <none>        80/TCP    4m53s
kubernetes   ClusterIP   10.1.0.1      <none>        443/TCP   7d23h
[root@master01 ~]# curl 10.1.74.113
OK![root@master01 ~]# curl 10.1.74.113

4,创建autoscale

[root@master01 ~]# kubectl autoscale  --max=10 --min=1 --cpu-percent=80 deployment autoscale 
horizontalpodautoscaler.autoscaling/autoscale autoscaled
[root@master01 ~]# kubectl get hpa
NAME        REFERENCE              TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
autoscale   Deployment/autoscale   0%/80%    1         10        1          17s

5,创建一个循环访问service的pod

[root@master01 ~]# kubectl run -i --tty load-generator --rm --image=busybox:1.28 --restart=Never -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://10.1.74.113; done"
If you don't see a command prompt, try pressing enter.
OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!
OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!

6,验证 pod增加至3个。

[root@master01 ~]# kubectl get hpa
NAME        REFERENCE              TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
autoscale   Deployment/autoscale   0%/80%    1         10        1          2m10s

[root@master01 ~]# kubectl get hpa
NAME        REFERENCE              TARGETS    MINPODS   MAXPODS   REPLICAS   AGE
autoscale   Deployment/autoscale   224%/80%   1         10        1          2m45s

[root@master01 ~]# kubectl get hpa
NAME        REFERENCE              TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
autoscale   Deployment/autoscale   74%/80%   1         10        3          3m52s

这些都是基础知识,官网上有,只是想记录一下。自己以后排错用。上面的pod标签还有deployment以及service的标签都是互相关联的。pod—>deployment—>service
适用于小批量激增服务时。

文章作者: emporer
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Emporer-Linux
kubernetes autoscale kubernetes
喜欢就支持一下吧