在我的AWS EKS中,我使用以下命令安装了nginx-ingress:
helm upgrade --install -f controller.yaml \
--namespace nginx-ingress \
--create-namespace \
--version 3.26.0 \
nginx-ingress ingress-nginx/ingress-nginx 其中controller.yaml文件如下所示:
controller:
ingressClass: nginx-internal
service:
internal:
enabled: true
annotations:
service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0我有几个应用程序,每个应用程序的入口都有不同的虚拟主机,我希望所有入口对象都指向内部负载均衡器,即使我在应用程序的入口设置了ingressClass,它们似乎也指向公共负载均衡器:
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx-internal那么,有没有办法只创建一个内部负载均衡器,其入口指向该负载均衡器?
谢谢
发布于 2021-07-17 09:53:32
注意到您在controller.yaml中启用了internal设置。根据documentation的说法,此设置会创建两个负载均衡器,一个外部负载均衡器和一个内部负载均衡器,以防您想要将某些应用程序暴露在internet上,而其他应用程序仅在同一k8s集群中的私有网络内。
如果你只想要一个内部负载均衡器,试着这样设置你的controller.yaml:
controller:
service:
annotations:
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: 'true'
service.beta.kubernetes.io/aws-load-balancer-type: nlb
service.beta.kubernetes.io/aws-load-balancer-internal: "true"
service.beta.kubernetes.io/aws-load-balancer-subnets: "subnet-xxxxx,subnet-yyyyy,subnet-zzzzz"它将只配置一个NBL,用于在内部路由流量。
使用service.beta.kubernetes.io/aws-load-balancer-subnets注释,您可以选择负载均衡器将流量路由到哪些可用区/子网。
如果您删除service.beta.kubernetes.io/aws-load-balancer-type注释,则将提供传统负载均衡器,而不是网络。
https://stackoverflow.com/questions/67203957
复制相似问题