【问题标题】:Kubernetes Load balancing and ProxyKubernetes 负载均衡和代理
【发布时间】:2018-05-08 16:01:51
【问题描述】:

我对 Kubernetes 很陌生,我有几个关于 REST API 请求代理和负载平衡的问题。

我有一个 Master 和两个 Worker 节点,其中一些服务在一个 Worker 节点上,而在其他 Worker 节点上很少。

一开始我只有一个工作节点,我使用工作节点 IP 和服务 NodePort 访问我的 pod。将另一个 Worker 节点添加到集群后,Kubernetes 已将 mu pod “重新分配”到两个工作节点。

现在,我可以再次使用工作节点 IP 和服务节点端口访问我的 pod。这让我有点困惑:对于不在使用哪个 IP 地址的工作节点上的 pod,我怎样才能访问我的 pod REST API?

另外,由于我现在有 2 个 Worker 节点,应该如何在两个 Worker 节点上以适当的方式进行负载平衡?我知道我可以将 serviceType 设置为 LoadBalancer for Service,但这是否足够?

感谢您的回答!

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    对于不在使用哪个 IP 地址的工作程序节点上的 pod,我如何访问我的 pod REST API?

    • 最好考虑将您的服务暴露给外部世界,而不是 pod,从而避免考虑运行 pod 的节点的 IP 地址。这个问题的答案取决于您的设置。根据实际复杂性和速度/可用性要求,可以进行许多配置,但基本设置归结为:
      • 如果您在某些受支持的云环境中运行,那么负载平衡入口的设置会毫不费力地将其暴露给外部世界。
      • 但是,如果您在裸机上运行,​​那么您必须创建自己的入口(简单的 nginx 或 apache 代理 pod 就足够了)并将上游指向您的服务名称(或 fqdn,如果是另一个命名空间),因此将服务中的所有 pod 暴露给外部世界,而不管它们运行的​​实际节点是什么,并将负载平衡留给 kubernetes 服务。

    如何在两个 Worker 节点上以适当的方式进行负载平衡?

    • 这是一个更复杂的话题,因为在您的 pod 跨节点均匀分布时,您可以使用忽略 pod 分布的外部负载均衡器。对我们来说,将负载平衡留给 kubernetes 服务被证明更准确,因为通常可以让两个 pod 在同一个节点上运行(如果 pod 的数量大于节点的数量),在这种情况下,外部负载平衡器不会能够统一平衡,kubernetes服务层就可以了。

    【讨论】:

    • 感谢您的回答。为了清楚起见,我使用的是 IBM Kubernetes 服务。我已经设置了 NodePort 服务类型,并使用 NodePort 和 Worker 公共 IP 访问此服务。我应该切换到 LoadBalancer 服务类型并通过 LoadBalancer Ingress IP 访问服务吗?
    • 当然。入口(LB)。如果我没记错的话,这个链接可以帮助你了解更多关于 IBM 的细节,有一个很好的解释适合你需要的底层架构:ibm.com/blogs/bluemix/2017/06/…
    猜你喜欢
    • 1970-01-01
    • 2015-09-30
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    • 2022-10-23
    • 2020-10-06
    • 2019-04-10
    • 1970-01-01
    相关资源
    最近更新 更多