【问题标题】:How does load balancing works in Docker Swarm and whats the difference with Kubernetes?负载均衡在 Docker Swarm 中是如何工作的,与 Kubernetes 有什么区别?
【发布时间】:2018-12-17 18:58:23
【问题描述】:

我正在学习 Docker,我做了一个简单的练习:

  • 准备了2台机器
  • 在上面设置 Leader 和 Worker
  • 使用 stack 命令部署了 2 个简单 Web 应用实例

当我向两台机器发送 HTTP 请求时,我得到了正确的回复。

这对我来说很奇怪。我认为只有领导节点应该处理请求,因为 Swarm 中有一些负载平衡。我认为如果某个节点出现故障,Swarm 应该自动将请求重定向到另一个节点,而领导节点就是它发生的地方。但看起来 Swarm 的工作方式有所不同。

Swarm 聚类背后的理念是什么? Kubernetes 有什么不同吗?

【问题讨论】:

    标签: docker kubernetes docker-swarm


    【解决方案1】:

    在 Docker swarm 中,领导者决定如何调度节点中的容器以及如何设置它们以便将流量转发给它们。但是,流量本身并没有流向领导者,而是流向Docker swarm ingress/network mesh

    您可以通过命令行执行此操作:

    $ docker service create \
      --name <SERVICE-NAME> \
      --publish published=8080,target=80 \
      <IMAGE>
    

    然后您的所有节点将在发布的端口上接收流量,并将被转发到容器。

    在上述情况下,您可以从外部负载均衡器将流量转发到端口 80(容器暴露端口)或端口 8080(已发布)

    Kubernetes 非常相似,但又不完全相同。 Services 通过LoadBalancerNodePort 暴露在外部。但是,您不能从外部直接访问 pod IP 地址,因为在外部看不到这些 IP 地址,这与上面 Docker swarm 示例中的 192.168.99.100:80 不同。此外,Kubernetes 中的流量不会通过主节点(除非您调用 kube-apiserver),而是直接流向节点。

    【讨论】:

      猜你喜欢
      • 2017-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-22
      • 1970-01-01
      • 2018-01-03
      • 2017-05-09
      • 1970-01-01
      相关资源
      最近更新 更多