HKI*_*KIT 4 kubernetes kubernetes-service
我在 Kubernetes 集群中运行 3 个节点。每个节点都有相同的 Pod myApp。我使用 NodePort 类型创建一个服务,以便可以从外部访问所有 3 个节点。服务 yaml 如下所示
apiVersion: v1
kind: Service
metadata:
name: myService
labels:
app: myApp
spec:
selector:
app: myApp
type: NodePort
Run Code Online (Sandbox Code Playgroud)
假设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的答案为是,则表示服务可以负载均衡请求。那么我们还需要负载均衡器吗?
谢谢
Arg*_*dhu 12
是的,负载平衡将由 kube-proxy 提供。如果您通过描述服务来查看端点,您会发现该服务支持的 Pod 的 IP 列在那里。因此,当请求到达任何节点 IP 和 NodePort 时,它将通过 kube-proxy 在这些 pod 之间进行负载平衡。它的工作方式是请求到达节点 IP 和端口之一,然后到达集群 IP,然后负载均衡到 clusterIP 后面的任何 Pod。
kube proxy 的负载均衡通过 IP 表规则发生在 TCP 层。Loadbalancer提供L7层(HTTP)的负载均衡和基于HTTP header等的高级路由规则。因此,如果您需要,那么您需要使用Loadbalancer。使用nodeport的另一个缺点是,如果节点IP发生变化,那么客户端需要知道这一点,这可以通过使用通常提供DNS的负载均衡器来避免。
| 归档时间: |
|
| 查看次数: |
2390 次 |
| 最近记录: |