常见的lb 负载有硬件的f5 big-ip ,同时对于互联网公司大家常用的是nginx haproxy
了解k8s 集群高可用的都知道 api server 是无状态的(etcd 解决了),但是controller-manager
scheduler 组件必须在集群中只能保证有一份副本,保证一个副本解决的方式就是 --leader-elect=true
参数,但是api server 一般的建议是做负载均衡,具体使用那种大家一般是nginx 。
这里面有一个坑,就是api server 使用的是长连接(stream),所以默认nginx 的lb 就有问题了。
解决方法:
a. 使用haproxy 进行api server 的lb (简单,好使,不用你添加太多的东西就可以了)
b. 修改nginx proxy_pass 参数让支持 stream 模式
proxy_set_header Connection '';
proxy_http_version 1.1;
chunked_transfer_encoding off;
proxy_buffering off;
proxy_cache off;
参考资料:
https://stackoverflow.com/questions/13672743/eventsource-server-sent-events-through-nginx
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffering