kubernetes-horizontalpodautoscalers(hpa)
基础知识官网上面都有。。这里只记录实验操作记录。
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
适用于小批量激增服务时。
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
Emporer-Linux!
喜欢就支持一下吧