K8S基于metrics server的HPA测试

K8S基于metrics server的HPA测试

Metrics API:

通过Metrics API我们可以获取到指定node或者pod的当前资源使用情况,API本身不存储任何信息,所以我们不可能通过API来获取资源的历史使用情况。
Metrics API的获取路径位于:/apis/metrics.k8s.io/
获取Metrics API的前提条件是metrics server要在K8S集群中成功部署
更多的metrics资料请参考:https://github.com/kubernetes/metrics

Metrics server:

Metrics server是Kubernetes集群资源使用情况的聚合器
从1.8版本开始,Metrics server默认可以通过kube-up.sh脚本以deployment的方式进行部署,也可以通过yaml文件的方式进行部署
Metrics server收集所有node节点的metrics信息
Kubernetes从1.7版本,通过 Kubernetes aggregator注册Metrics Server在主API server

部署metrics-server

由于官方已经弃用heapster,现metrics-server作为其替代方案。
当前最新版本为v0.3.1

yum install -y git
#安装git工具
git clone https://github.com/kubernetes-incubator/metrics-server
#git文件。
vi /root/metrics-server/deploy/1.8+/metrics-server-deployment.yaml
#修改metrics-server-deployment.yaml 参数 为了支持NDS解析IP 
#不修改信息  kubectl top node 报错没信息

        imagePullPolicy: Always
        command:
        - /metrics-server
        - --kubelet-insecure-tls
        - --kubelet-preferred-address-types=InternalIP
        volumeMounts:
		
cd /root/metrics-server/deploy/1.8+/
kubectl apply -f ./

部署成功后,达到如下结果,则为正常:

[root@k8s-master ~]#  kubectl top node
NAME         CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
k8s-master   216m         2%     966Mi           12%       
k8s-node1    46m          0%     492Mi           6%        
k8s-node2    46m          0%     417Mi           5%    
[root@k8s-master ~]# kubectl top pods
NAME                         CPU(cores)   MEMORY(bytes)   
nginxtest-6fff7bd9f4-pwbl5   0m           1Mi 

测试HPA

创建一个名为nginxtest的deployment;
创建一个关联资源nginxtest的HPA,最小的pod副本数为1,最大为10。HPA会根据设定的cpu使用率(10%)动态的增加或者减少pod数量,此地方用于测试,所以设定的伸缩阈值会比较小;
使用curl方式加大、减小nginx的负载;

kubectl run nginxtest --image=nginx:latest --requests=cpu=1m --expose --port=80
nginxtest_ip=$(kubectl get svc nginxtest -o=jsonpath="{.spec.clusterIP}")
# 获取svc IP,用于测试
kubectl autoscale deployment nginxtest --cpu-percent=10 --min=1 --max=10

我们来创建一个busybox,并且循环访问上面创建的服务。

docker run --rm -it busybox /bin/sh -c "while true; do wget -q -O- http://$nginxtest_ip; done"

查看hpa状态,同时我们查看相关资源nginxtest的副本数量,副本数量在变化。CPU资源利用率也在变化,最后趋于平稳。

kubectl get hpa

我们关掉刚才的busbox并等待一段时间。可以看到副本数量变回为1。

创建和删除容器组水平伸缩器

kubectl autoscale deployment nginxtest --cpu-percent=10 --min=1 --max=10
kubectl delete horizontalpodautoscaler.autoscaling/nginxtest

HPA能对服务的容器数量做自动伸缩,对于服务的稳定性是一个很好的提升,但在生产中应用较少,原因是因为不太容易衡量业务负载是否正常,影响服务稳定性的因素非常多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值