我正在尝试配置以下设置。
用户 - > https://xxx.abc.com - > VPC-IP(AWS LB):443 - > POD:8080
参考这个问题AWS VPC - K8S </跨度> - 负载均衡
如果我设置了入口服务;是…由kubernetes创建的LoadBalancer?
我目前正在限制使用AWS Security Group仅访问特定IP的VPC。
是否可以使用现有的LoadBalancer并将其分配/附加到Ingress服务?或者我必须手动将SG分配给负载均衡器 K8S </跨度> ? …
对不起,但你的问题似乎不清楚或有点纠结=希望我没有错过这一点。
要实现这种情况: User -> https://xxx.abc.com -> VPC-IP(AWS LB):443 -> POD:8080
User -> https://xxx.abc.com -> VPC-IP(AWS LB):443 -> POD:8080
您需要按照常规设置配置入口和入口控制器,并在ingress.yaml中添加主机(您的URL)。在您不购买域名并将其连接到AWS之前,您将无法访问它。 但您可以通过以下方式检查设置是否有效:
curl -v -H "HOST:host_from_config" loadbalanceraddress.com
如果我设置了入口服务;是由LoadBalancer创建的 Kubernetes?
是。
当服务类型设置为LoadBalancer时,Kubernetes提供 功能相当于type = to pods 集群并通过编程扩展它(Kubernetes外部) 带有Kubernetes pods条目的负载均衡器。 Kubernetes 服务控制器自动创建外部负载 平衡器,健康检查(如果需要),防火墙规则(如果需要)和 检索云提供商分配的外部IP 在服务对象中填充它。
您可以随时限制安全组策略,只需找到它所属的SG并根据需要编辑规则或更改负载均衡器所属的SG并进行调整。
关于将现有LB与Ingress一起使用的情况 - 您可以尝试将现有的LoadBalancer(未尝试此操作)添加到服务配置,将正确的实例附加到LoadBalancer等。虽然我没有尝试过,但似乎有些努力和正确的配置应该是可能的。
status: loadBalancer: ingress: - hostname: example-address.eu-central-1.elb.amazonaws.com
另一种方法是将服务类型更改为NodePort并将其指向手动创建的LB到您的应用程序 - 这可以在您需要连接到一个ELB的几个服务时使用。已经描述过了 这里 。
只想详细说明@ aurelius的解决方案2:
第1步:输入您的入口服务 NodePort 它将在集群的所有节点上获得类似Node:34567的端口。
NodePort
步骤2:配置设置现有负载均衡器以作为后端路由到这些端口。
AWS existing load-balancer => Workder-Node1:34567 => Ingress-service => xxx => Workder-Node2:34567 => Ingress-service => xxx => Workder-Node3:34567 => Ingress-service => xxx