2016-06-20 75 views
1

我对Kubernetes有几个基本查询。Kubernetes单点故障和负载平衡

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

enter image description here

查询:

  1. 如果Kubernetes服务或因为它是由在其上KUBE代理被配置和服务的多个荚支持单个故障点仅仅是一个虚拟层,它不能被视为单点故障?

  2. 上图是单个Kubernetes集群,这是单点故障还是应为多个Kubernetes集群计划系统,我需要以零停机时间支持HA。

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

注:没有。上图中的矩形框只是代表性的。我将每层部署10到20个吊舱以满足我的工作量。

回答

0

已经成功地与内部部署的50个多荚部署了直播(规划,扩大在不久的将来250+)Kubernetes下面是我从经验观察我和我的团队云集:

  1. 如果Kubernetes服务单一故障点或因为它是 由配置了kube-proxy的多个pod支持并且 服务仅仅是一个虚拟层,它不能被视为单一的 故障点?

这将是单点故障,如果负载平衡器(LB)被映射到单个节点的IP作为VM /物理服务器的故障会导致整个应用程序。因此,将LB指向至少2个不同的节点IP。

  • 上述图示为单Kubernetes簇,这是单个故障点 或我应该计划多个Kubernetes集群系统 其中我需要支持HA与零停机时间。
  • 配置Kubernetes在HA与负载平衡器

  • 上述图示利用它默认仅支持L4负载平衡Kubernetes服务(轮循只)。因此,说一个tomcat 服务器负载很重,循环法将不会根据使用情况均匀分配负载 。如何根据系统资源消耗或使用情况或不使用情况来实现负载分配。在以上 拓扑中打开连接?
  • 是的,只有循环法现在支持负载平衡。当我上次检查时,Ingress处于测试阶段,尚未准备好投入生产。 NGINX +可用于负载平衡,忽略Kubernetes负载均衡,并使用Kubernetes API进行配置,以便在运行时在NGINX +中更新或删除Tomcat Pods,而无需停机。 (我没有尝试这样呢,但如果当前的设置抛出的任何挑战,未来可能会考虑)

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

    0
    1. 如果Kubernetes服务失败,或者因为它是通过在其上配置服务KUBE-代理多个荚支持单点只是一个虚拟层,它不能被视为单点故障?

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

  • 上述图示为单Kubernetes簇,是失败的这样的单点或我应该计划多个Kubernetes集群系统,其中我需要支持HA零停机。
  • k8s集群不是HA,因为主节点是单点故障。主节点上的重要组件包括apiserver和控制器管理器,没有它们,您无法创建更多Pod或服务。也就是说,即使主节点关闭,您部署的服务也应该继续工作。

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

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

    这是不正确的,kubernetes有测试版功能称为入口,支持L7负载均衡,看看是否有帮助http://kubernetes.io/docs/user-guide/ingress/ :)

    +0

    感谢... 2。我可以为Kubernetes大师计划HA。 Ubernetes不是GA,因此不能考虑。 3. Ingress仍处于测试阶段,因此目前无法考虑。因此,我的评论,目前kubernetes服务只支持L4负载平衡。对#4有何评论? –

    +0

    我不确定我是否正确理解#4。你是否建议有两个重复的k8s集群? – caesarxuchao

    +0

    是否正确 - 在HA中是否有重复的k8s群集帮助,或者这是不必要的复杂性?我不能有任何单点故障,因此查询 –