2016-06-20 120 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羣集幫助,或者這是不必要的複雜性?我不能有任何單點故障,因此查詢 –