为什么LoadBalancer会有NodePort?

为什么LoadBalancer会有NodePort?

我有一个内部部署的、公开的 k8s 节点,并且已将 metallb 配置为带有 Traefik 2.0 Layer 4 LB 的 LB 提供程序。

我试图弄清楚为什么 Traefik LB 服务被分配了 NodePort:

kubectl describe svc traefik
Name:                     traefik
Namespace:                default
Labels:                   <none>
Annotations:              metallb.universe.tf/address-pool: default
Selector:                 app=traefik
Type:                     LoadBalancer
IP:                       10.102.106.163
LoadBalancer Ingress:     x.x.x.x
Port:                     web  80/TCP
TargetPort:               80/TCP
NodePort:                 web  30481/TCP
Endpoints:                192.168.152.4:80
Port:                     admin  8080/TCP
TargetPort:               8080/TCP
NodePort:                 admin  30839/TCP
Endpoints:                192.168.152.4:8080
Port:                     websecure  443/TCP
TargetPort:               443/TCP
NodePort:                 websecure  30647/TCP
Endpoints:                192.168.152.4:443
Session Affinity:         None
External Traffic Policy:  Cluster
Events:
  Type    Reason        Age                   From                Message
  ----    ------        ----                  ----                -------
  Normal  IPAllocated   53m                   metallb-controller  Assigned IP "x.x.x.x"
  Normal  nodeAssigned  2m21s (x13 over 53m)  metallb-speaker     announcing from node "x-lp-xxx-xx-xxxxx"

在什么情况下 LB 服务会被分配 NodePort?

答案1

当您使用外部负载均衡器时,它们会自动创建。

来自文档:

LoadBalancer:使用云提供商的负载均衡器向外部公开服务。外部负载均衡器路由到的 NodePort 和 ClusterIP 服务会自动创建。

https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types

相关内容