关于Kubernetes Ingress关联现有AWS NLB的技术咨询
关于AWS NLB与Kubernetes Ingress绑定的问题解答
问题1:无需LB控制器的理解是否正确?
不正确。哪怕是使用预先存在的AWS NLB,你仍然需要部署AWS Load Balancer Controller(原AWS ALB Ingress Controller,现支持NLB)。原因在于:
- Kubernetes的Ingress资源只是路由规则的声明,本身没有执行能力,必须依赖对应的Ingress Controller来解析Ingress配置,并将其同步到NLB上。
- Controller还负责维护NLB目标组与Kubernetes后端Pod/NodePort服务的关联关系,确保流量能正确转发到你的应用。
问题2:仅靠Ingress注解绑定现有NLB的思路是否正确?
不完全正确。注解只是触发Controller关联现有NLB的配置指令,但前提是你已经部署并配置好了AWS Load Balancer Controller,且该Controller拥有操作目标NLB的IAM权限。
关键操作步骤
- 首先部署AWS Load Balancer Controller,并为其配置IAM角色,确保具备以下核心权限:
elasticloadbalancing:DescribeLoadBalancerselasticloadbalancing:ModifyLoadBalancerselasticloadbalancing:DescribeTargetGroupselasticloadbalancing:RegisterTargets/DeregisterTargets
- 在Ingress资源中添加注解指定现有NLB的ARN,示例配置片段:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: your-app-ingress annotations: alb.ingress.kubernetes.io/load-balancer-arn: arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/net/your-existing-nlb/abcdef123456 alb.ingress.kubernetes.io/target-type: ip # 或node,根据你的服务类型选择 # 其他按需添加的注解,比如协议、端口映射等 spec: rules: - http: paths: - path: / pathType: Prefix backend: service: name: your-app-service port: number: 80 - 确保NLB的VPC、子网配置与你的Kubernetes集群一致,避免网络连通性问题。
内容的提问来源于stack exchange,提问作者Joshua Restivo
相关产品推荐
相关产品推荐

