LoadBalancer

负载均衡器都是由每一家云服务厂商自行提供的,用户只需要将Service的spec.type设置为LoadBalancer即可。

之前说LoadBalancer是NodePort的扩展,每一个LoadBalancer都有自己的独一无二的IP地址(独立于Node地址外),并将所有连接重定向至Service对象的Node的端口,然后再导至Pod。

创建LoadBalancer类型的Service

下面展示创建类型为LoadBalancer的Service。例如,创建一个名为kubia-loadbalancer的Service对象,其匹配包含标签app=kubia的Pod,并且这些Pod的端口号为8080,该负载均衡器监听的端口为80

apiVersion: v1
kind: Service
metadata:
  name: kubia-loadbalancer
spec:
  type: LoadBalancer
  ports:
  - port: 80
    targetPort: 8080
  selector:
    app: kubia

⛩ 负载均衡器启动后,会为 Node 分配一个随机的真实的监听端口,当然也可以通过 spec.ports.nodePort 手动指定;

🛥 这里的负载均衡的 IP 和 80 端口都是由 iptables 生成的虚拟的,是无法 ping 通的;但是生成的 nodePort 是真实存在的;

外部客户端访问Service的架构图如下:

LoadBalancer类型的Service对象

Last updated

Was this helpful?