gpt4 book ai didi

kubernetes - 跨多个节点的服务节点端口

转载 作者:行者123 更新时间:2023-12-04 13:16:04 24 4
gpt4 key购买 nike

我在 Kubernetes 集群中运行 3 个节点。每个节点都有相同的 Pod myApp。
我使用 NodePort 类型创建了一个服务,以便可以从外部访问所有 3 个节点。
服务 yaml 如下所示

apiVersion: v1
kind: Service
metadata:
name: myService
labels:
app: myApp
spec:
selector:
app: myApp
type: NodePort

假设3个节点的节点IP+端口为:
1. 192.168.18.1:30010
2. 192.168.18.2:30010
3. 192.168.18.3:30010

我的问题是:
1. 如果所有的请求都来自IP(192.168.18.1:30010)的单个节点,服务会负载均衡到其他节点中Pod的请求,还是只是目标节点(IP 192.168.18.1:30010)?

2. 如果问题 1 的答案是肯定的,则表示服务可以负载均衡请求。那么我们还需要任何负载均衡器吗?

谢谢

最佳答案

  • 是的,负载平衡将由 kube-proxy 提供。如果您通过描述服务来查看端点,您会发现该服务支持的 pod 的 IP 列在那里。因此,当请求到达任何节点 IP 和 NodePort 时,它将由这些 Pod 之间的 kube-proxy 进行负载平衡。它的工作方式是请求到达节点 IP 和端口之一,然后到达集群 IP,然后将负载平衡到集群 IP 后面的任何 pod。
  • kube 代理的负载均衡通过 IP 表规则发生在 TCP 层。 Loadbalancer 在 L7 层(HTTP)提供负载均衡和基于 HTTP 头等的高级路由规则。所以如果你需要,那么你需要使用 Loadbalancer。使用 nodeport 的另一个缺点是,如果节点 IP 发生变化,那么客户端需要知道可以通过使用通常提供 DNS 的负载均衡器来避免的情况。

  • enter image description here

    关于kubernetes - 跨多个节点的服务节点端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60386521/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com