基于应用层访问的k8s节点单点ip故障问题
发现问题
基于应用层访问的k8s节点单点ip故障问题
分析问题
k8s只能实现是pod的负载,比如这个节点的pod挂掉了,会在服务器状态正常并且资源足够的节点,会新起一个pod,并且端口不会变,以保证他后续的访问。但是如果服务器k8s节点挂了,并且刚好我们就单点解析到这台服务器上,如果不做一些其他措施。这就基本没戏了,这已经超出k8s的范畴。
解决方案
1、基于四层做LVS+keepalived
k8s 多master节点+多node节点+多etcd节点
2、Kubernetes 集群中使用 Traefik 反向代理
(Traefik就是我们下午看到的小老头子)
这个我查阅资料是基于pod的负载。Traefik负载进来的请求和流量分配给每个节点上的pod,实现pod负载。对我们讨论的节点故障好像没有什么用,我接下来继续学习研究一下这个Traefik。
Traefik文档:https://docs.traefik.io/
Traefik+k8s文档:https://www.jianshu.com/p/15ffd0ee0a87
3、基于七层做nginx负载均衡+keepalived双机热备
4、利用kubeadm部署方式,master节点同时作为keepalived服务器。
这种方式我咨询了几个学友好像不太好维护,用的人很少,大部分人用的都是比较常见、传统的高可负载
controlPlaneEndpoint: "192.168.1.222:6443" 可以指定。这种方式也得用nginx做一下转发。
总结
我觉得最合适的方式是用两台服务器做七层nginx+keepalived,适合网站,即传统也比较容易维护。