背景:感觉k8s没有用多少资源,但是k8s总的request占比非常高,然后进行排查
排查过程
- 从上图上来看,集群总cpu的limit值就很离谱,也看得出集群的使用率低的发指。说明request值还有降低的空间。
- 从命名空间来看,production空间明显不正常,一个pod的request值平均是1,limit值更是达到2500
-
这一查把我惊了,竟然有1000个pod,怪不得request和limit的值这么大
-
这1000多个pod是cronjob产生的,因为这个命名空间配置了istio自动注入了,当cronjob中的容器跑完任务后,istio-proxy容器还是正常运行,导致整个pod没有退出。github.com/istio/istio… 从这个issue中找到了解决方案,就是在cronjob中的(cronjob.spec.jobTemplate.spec.metadata) metadata中annotation加上 sidecar.istio.io/inject: "false",然后写个脚本将存在的istio-proxy一一退出。curl --max-time 2 -s -f -XPOST http://127.0.0.1:15000/quitquitquit
kubectl exec -n production -t pod_name -c istio-proxy -- curl --max-time 2 -s -f -XPOST http://127.0.0.1:15000/quitquitquit
结果
- 现在集群的limit和request看起来正常多了,但是使用率低的问题还是存在,后续在优化