首页 文章

Kubernetes单点故障和负载 balancer

提问于
浏览
1

我对Kubernetes几乎没有基本的疑问 .

考虑以下部署 . 第7层负载均衡器将通过Kubernetes服务将请求路由到NGINX服务器,NGINX将路由到Tomcat,Kubernetes服务 .

enter image description here

Queries:

  • 如果Kubernetes服务于单点故障,或者因为配置了kube-proxy且服务只是虚拟层的多个pod支持它,那么它不能被视为单点故障?

  • 上图是单个Kubernetes集群,这是一个单点故障,还是我应该为系统规划多个Kubernetes集群,我需要在零停机时间内支持HA .

  • 上图利用了Kubernetes服务,默认情况下仅支持L4负载均衡(仅限循环) . 因此说tomcat服务器负载很重,循环不会根据使用情况均匀分配负载 . 如何根据系统资源消耗或使用情况实现负载分配或不实现 . 上述拓扑中的开放连接?

注意:没有 . 上图中的矩形框仅是代表性的 . 我将在每层部署10到20个pod以满足我的工作量 .

2 回答

  • 0

    如果Kubernetes服务于单点故障,或者因为配置了kube-proxy且服务只是虚拟层的多个pod支持它,那么它不能被视为单点故障?

    我认为你的后一种解释是正确的 .

    上图是单个Kubernetes集群,这是一个单点故障,还是我应该为系统规划多个Kubernetes集群,我需要在零停机时间内支持HA .

    k8s群集不是HA,因为主节点是单点故障 . 主节点上的重要组件包括apiserver和控制器管理器,如果没有它们,则无法创建更多的pod或服务 . 也就是说,即使主节点关闭,您部署的服务也应该继续工作 .

    有关如何在HA模式下设置k8s群集的指南,我还没有亲自尝试过:http://kubernetes.io/docs/admin/high-availability/ . 还有Ubernetes (WIP),它允许您在 Cloud 提供商之间联合多个k8s群集 .

    上图利用了Kubernetes服务,默认情况下仅支持L4负载均衡(仅限循环) .

    这不是真的,kubernetes有beta功能称为ingress,它支持L7负载均衡,看看是否有帮助http://kubernetes.io/docs/user-guide/ingress/ :)

  • 0

    已经成功实施了下面Kubernetes的50个吊舱(计划在不久的将来扩展到250个)的内部部署,这是我从经验中观察到的,我和我的团队聚集在一起:

    如果Kubernetes服务于单点故障,或者因为配置了kube-proxy且服务只是虚拟层的多个pod支持它,那么它不能被视为单点故障?

    如果负载均衡器(LB)映射到单个节点IP,那将是单点故障,因为该VM /物理服务器的故障将导致整个应用程序崩溃 . 因此,将LB指向至少2个不同的节点IP .

    上图是单个Kubernetes集群,这是一个单点故障,还是我应该为系统规划多个Kubernetes集群,我需要在零停机时间内支持HA .

    使用负载均衡器在HA中配置Kubernetes

    上图利用了Kubernetes服务,默认情况下仅支持L4负载均衡(仅限循环) . 因此说tomcat服务器负载很重,循环不会根据使用情况均匀分配负载 . 如何根据系统资源消耗或使用情况实现负载分配或不实现 . 上述拓扑中的开放连接?

    是的,目前只支持循环负载均衡 . Ingress处于测试阶段,在我上次检查时尚未准备好 生产环境 . NGINX可用于负载 balancer 忽略Kubernetes负载 balancer 并使用Kubernetes API,可以对其进行配置,以便在运行时在NGINX中更新Tomcat Pod的添加或删除,而不会出现任何停机 . (我还没有尝试过这个,但是如果当前的设置会引发任何挑战,将来可能会考虑)

    参考:https://www.nginx.com/blog/load-balancing-kubernetes-services-nginx-plus/

相关问题