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集群...
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能对服务的容器数量做自动伸缩,对于服务的稳定性是一个很好的提升,但在生产中应用较少,原因是因为不太容易衡量业务负载是否正常,影响服务稳定性的因素非常多。
更多推荐
所有评论(0)