伸缩Kubernetes到2500个节点中遇到的问题和解决方法
Kubernetes自从 1.6 起便号称可以承载5000个以上的节点,但是从数十到5000的路上,难免会遇到问题。 本片文章即分享Open API在kubernetes 5000之路上的经验,包括遇到的问题、尝试解决问题以及找到真正的问题。 遇到的问题以及如何解决 问题一:1 ~ 500个节点之后 问题: kubectl 有时会出现 timeout(p.s. kubectl -v=6 可以显示所有API细节指令) 尝试解决: 一开始以为是kube-apiserver服务器负载的问题,尝试增加proxy做replica协助进行负载均衡 但是超过10个备份master的时候,发现问题不是因为kube-apiserver无法承受负载,GKE通过一台32-core VM就可以承载500个节点 原因: 排除以上原因,开始排查master上剩下的几个服务(etcd、kube-proxy) 开始尝试调整etcd 通过使用 datadog 查看etcd吞吐量,发现有异常延迟(latency spiking ~100 ms) 通过 Fio 工具做性能评估,发现只用到10%的IOPS(Input/Output Per Second),由于写入延迟(write latency 2ms)降低了性能 尝试把SSD从网络硬盘变为每台机器有个local temp drive(SSD) 结果从~100ms —>