标签:request 查看 Kubernete ref restart read osc 一段 策略
一、HPAHPA的全称为Horizontal Pod Autoscaling,它可以根据当前pod资源的使用率(如CPU、磁盘、内存等),进行副本数的动态的扩容与缩容,以便减轻各个pod的压力。当pod负载达到一定的阈值后,会根据扩缩容的策略生成更多新的pod来分担压力,当pod的使用比较空闲时,在稳定空闲一段时间后,还会自动减少pod的副本数量。
若要实现自动扩缩容的功能,还需要部署heapster服务,用来收集及统计资源的利用率,支持kubectl top命令,heapster服务集成在prometheus(普罗米修斯) MertricServer服务中,所以说,为了方便,我这里基于prometheus服务的环境上进行部署HPA(动态扩缩容)的服务。
可以参考博文:k8s群集的三种Web-UI界面部署中的第三个部署Prometheus服务,来运行prometheus服务,如果不想部署prometheus,那么可以参考github上来单独部署heapster服务,
//要想实现pod副本数量的一个扩缩容,就必须保证,可以在master上执行下面的命令
//查看节点的资源使用情况
[root@docker-k8s01 kube-prometheus]# kubectl top nodes
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
docker-k8s01 101m 5% 1315Mi 76%
docker-k8s02 59m 2% 1077Mi 62%
docker-k8s03 54m 2% 1131Mi 65%
//运行这个hpa-example,请求CPU的资源位200m,暴露一个80端口
[root@docker-k8s01 ~]# kubectl run php-apache --image=mirrorgooglecontainers/hpa-example --requests=cpu=200m --expose --port=80
//当deployment资源对象的CPU使用率高达50%时,就会进行扩容,最多扩容到10个
[root@docker-k8s01 ~]# kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10
//上述的命令作用是生成了一个HPA的控制器,用于控制自动扩缩容
//查看php-apache对应的svc群集IP
[root@docker-k8s01 ~]# kubectl get svc | grep php-apache
php-apache ClusterIP 10.98.31.183 <none> 80/TCP 82s
//确定当前pod数量
[root@docker-k8s01 ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
php-apache-867f97c8cb-g8kl9 1/1 Running 0 2m30s
//创建一个应用,用来不停的访问我们刚刚创建的php-apache的svc资源。也可以使用node节点,多开几个终端来进行访问。
//在多台节点上输入如下命令模拟多用户对php-apaache造成成吨伤害
[root@docker-k8s01 ~]# kubectl run -i --tty load-generator --image=busybox /bin/sh
/ # while true; do wget -q -O- 10.98.31.183; done
//每一次OK都是对php-apache的肯定,访问成功
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!O
//接下来我们查看资源使用情况
//查看hpa的资源使用,可以看到才第二次就直接飙到了300%多
[root@docker-k8s01 ~]# kubectl get hpa -w
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
php-apache Deployment/php-apache 0%/50% 1 10 1 6m17s
php-apache Deployment/php-apache 331%/50% 1 10 1 10m
php-apache Deployment/php-apache 331%/50% 1 10 4 11m
php-apache Deployment/php-apache 894%/50% 1 10 7 11m
php-apache Deployment/php-apache 894%/50% 1 10 10 11m
//可以看到我们的10个pod都已经就绪了
[root@docker-k8s01 ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
load-generator-7d549cd44-8x96c 1/1 Running 0 5m48s
php-apache-867f97c8cb-44d2p 1/1 Running 0 3m4s
php-apache-867f97c8cb-6qf6b 1/1 Running 0 3m34s
php-apache-867f97c8cb-bhjtd 1/1 Running 0 3m4s
php-apache-867f97c8cb-fwhvs 1/1 Running 0 3m34s
php-apache-867f97c8cb-g8kl9 1/1 Running 0 16m
php-apache-867f97c8cb-gjzl7 1/1 Running 0 3m4s
php-apache-867f97c8cb-ktgnv 1/1 Running 0 3m34s
php-apache-867f97c8cb-mhm75 1/1 Running 0 3m19s
php-apache-867f97c8cb-pnwkf 1/1 Running 0 3m19s
php-apache-867f97c8cb-zqd62 1/1 Running 0 3m19s
[root@docker-k8s01 ~]# kubectl get deployments.
NAME READY UP-TO-DATE AVAILABLE AGE
load-generator 1/1 1 1 6m42s
php-apache 10/10 10 10 17m
//当停止死循环请求后,也并不会立即减少pod数量,会等一段时间后减少pod数量,防止流量再次激增。
标签:request 查看 Kubernete ref restart read osc 一段 策略
原文地址:https://blog.51cto.com/14227204/2532812