测试流程

  1. 搭建测试环境,可以使用社区推荐的kubemark
  2. 确定当前kubernetes社区确定的scheduler调度性能,每秒能处理多少个pod的调度
  3. 实际测试当前环境的scheduler性能,是否与社区确定的scheduler性能有差异,如果存在差异过大,那么确定是scheduler本身以外导致的性能差异
  4. 采用优化方案,通过比对优化前后的性能指标确定是否达到优化效果以及得到影响scheduler性能的因素.

优化思路

  1. 增加apiserver的性能:multiple-active api-server,调整api-server的流控QOS
  2. Etcd性能提升(event 事件分库+etcd采用本地ssd盘作为backend存储+etcd独立部署非k8s node上+etcd 采用v3版本)
  3. 单个scheduler的性能提升(代码优化以及参数调整)
  4. Multiple-scheduler,按照pod指定schedulerName,让多个scheduler同时处理

优化过程借鉴的思路

  1. 监控系统,观察系统是否存在资源(cpu/memory/io)不够使用的情况
  2. 熟练的使用metrics和cpu profiling进行性能优化
  3. 图形化的展示流程,能够直观的展示出性能的动态变化
  4. 基准测试的使用可以展示性能并揭示任何潜在问题

参考
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

Logo

开源、云原生的融合云平台

更多推荐