大规模下kubernetes集群的scheduler性能
测试流程搭建测试环境,可以使用社区推荐的kubemark确定当前kubernetes社区确定的scheduler调度性能,每秒能处理多少个pod的调度实际测试当前环境的scheduler性能,是否与社区确定的scheduler性能有差异,如果存在差异过大,那么确定是scheduler本身以外导致的性能差异采用优化方案,通过比对优化前后的性能指标确定是否达到优化效果以及得到影响sched...
测试流程
- 搭建测试环境,可以使用社区推荐的kubemark
- 确定当前kubernetes社区确定的scheduler调度性能,每秒能处理多少个pod的调度
- 实际测试当前环境的scheduler性能,是否与社区确定的scheduler性能有差异,如果存在差异过大,那么确定是scheduler本身以外导致的性能差异
- 采用优化方案,通过比对优化前后的性能指标确定是否达到优化效果以及得到影响scheduler性能的因素.
优化思路
- 增加apiserver的性能:multiple-active api-server,调整api-server的流控QOS
- Etcd性能提升(event 事件分库+etcd采用本地ssd盘作为backend存储+etcd独立部署非k8s node上+etcd 采用v3版本)
- 单个scheduler的性能提升(代码优化以及参数调整)
- Multiple-scheduler,按照pod指定schedulerName,让多个scheduler同时处理
优化过程借鉴的思路
- 监控系统,观察系统是否存在资源(cpu/memory/io)不够使用的情况
- 熟练的使用metrics和cpu profiling进行性能优化
- 图形化的展示流程,能够直观的展示出性能的动态变化
- 基准测试的使用可以展示性能并揭示任何潜在问题
参考
https://coreos.com/blog/improving-kubernetes-scheduler-performance.html
https://docs.google.com/presentation/d/1HYGDFTWyKjJveAk_t10L6uxoZOWTiRVLLCZj5Zxw5ok/edit?usp=sharing
https://github.com/kubernetes/kubernetes/blob/2b2f2857771c748f0f0e261f3b8e2ad1627325ce/docs/proposals/kubemark.md
https://github.com/coreos/kscale/blob/dfe65f050cff5bebf83074e3b3e6b3c2d69a9222/logplot/main.go
https://docs.google.com/presentation/d/1HYGDFTWyKjJveAk_t10L6uxoZOWTiRVLLCZj5Zxw5ok/edit#slide=id.gd6d8abb5d_0_1366
https://github.com/kubernetes/kubernetes/pull/18458/files scheduler performance testing
https://github.com/jonboulle/presentations/blob/master/2016_08_Promcon_Metrics_Matter_10x_Improvement_for_Kubernetes_Performance.pdf
更多推荐
所有评论(0)