我有一个内部部署的、公开的 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