AWS-K8S-入口负载平衡器

时间:2019-02-28 00:14:26

标签: amazon-web-services kubernetes nginx-ingress amazon-eks

我正在尝试配置以下设置。

User -> https://xxx.abc.com -> VPC-IP(AWS LB):443 -> POD:8080

参考此问题AWS VPC - k8s - load balancing

如果我设置了入口服务;是Kubernetes创建的LoadBalancer吗?

我目前正在通过AWS Security Group限制对特定IP的VPC访问。

是否可以使用现有的LoadBalancer并将其分配/附加到Ingress Service?还是由K8S创建SG后,我是否必须手动将SG分配给负载均衡器?

2 个答案:

答案 0 :(得分:1)

对不起,但您的问题似乎不清楚或有点纠结=希望我不会错过这一点。

要实现此方案: User -> https://xxx.abc.com -> VPC-IP(AWS LB):443 -> POD:8080

您需要按照通常的设置来配置入口和入口控制器,只需在ingress.yaml中添加主机(您的网址)即可。在不购买域名并将其连接到AWS之前,您将无法访问它。 但是您可以通过以下方式检查设置是否有效:

curl -v -H "HOST:host_from_config" loadbalanceraddress.com

  

如果我设置了入口服务;是LoadBalancer由创建   Kubernetes?

是的。

  

当服务类型设置为LoadBalancer时,Kubernetes将提供   相当于type =的功能   集群并通过编程(Kubernetes的外部)对其进行扩展   负载均衡器以及Kubernetes Pod的条目。 Kubernetes   服务控制器可自动创建外部负载   平衡器,运行状况检查(如果需要),防火墙规则(如果需要)和   检索由云提供商分配的外部IP,并   将其填充到服务对象中。

您可以随时随地限制安全组策略,只需找到它所属的SG并根据需要编辑规则,或者更改负载均衡器所属的SG并进行调整即可。

关于将现有LB与Ingress结合使用的情况-您可以尝试将现有的LoadBalancer添加(不尝试此操作)到Service配置中,将正确的实例附加到LoadBalancer等。尽管我没有尝试过像需要一些努力和正确配置一样。

status: loadBalancer: ingress: - hostname: example-address.eu-central-1.elb.amazonaws.com

另一种方法是将服务类型更改为NodePort并将其指向应用程序手动创建的LB-当您需要将多个服务连接到一个ELB时可以使用此服务。已经here进行了描述。

答案 1 :(得分:1)

只想详细介绍@aurelius的解决方案2:

步骤1:让您的入口服务键入NodePort,它将在集群的所有节点上获得一个类似于Node:34567的端口。

第2步:配置设置现有的负载均衡器,以路由到这些端口作为后端。

AWS existing load-balancer => Workder-Node1:34567 => Ingress-service => xxx
                           => Workder-Node2:34567 => Ingress-service => xxx
                           => Workder-Node3:34567 => Ingress-service => xxx