无法使用AWS Elastic LoadBalancer

时间:2019-02-01 20:07:13

标签: kubernetes amazon-elb kubernetes-ingress aws-load-balancer aws-application-load-balancer

我创建了aws应用程序负载平衡器myservices,并得到了aws控制台中列出的DNS名称-internal-myservices-987070943.us-east-1.elb.amazonaws.com

我还创建了目标组,并在“说明”下显示在下面- 名称为myservices-LB,协议为HTTPS,端口为443,目标类型为实例,负载均衡器为myservices 在“目标”选项卡下,我可以看到注册的目标,其实例ID显示为i-02dbf9b3a7d9163e7,端口为443,以及其他详细信息……此实例ID是我的ec2实例,已将其配置为kubernetes集群的主节点。

实际上,我的负载均衡器和EC2实例都在同一VPC中。

现在我可以从本地计算机访问此URL https://internal-myservices-987070943.us-east-1.elb.amazonaws.com 我所做的是-1)运行状况检查在HTTPS 443端口中失败,以及2)在我的EC2实例中安装了Web服务器nginx。 因此,安装nginx并打开SSL端口会自动解决健康检查问题,我可以使用https浏览内部LB URL。

但是仍然没有解决我使用kubernetes svc创建负载均衡器的主要问题:( 它仍显示EXTERNAL_IP的<pending>。我的疑问是,由于EC2实例和LB都在同一VPC中,为什么traceroute internal-myservices-987070943.us-east-1.elb.amazonaws.com不跟踪它?我得到所有30跳的所有* * *。但是我可以从本地计算机成功跟踪它。所以这就是为什么它不创建任何外部ip的原因?

我完成了与Kubernetes集成AWS云的所有工作。

1)我在kube群集中的主节点和工作节点的主机名都与EC2实例DNS名称相同。

2)在EC2实例和kubelet服务中添加了标签

3)为kube-api和kube-controller-manager POD添加了cloud-config标签

4)我看到elasticloadbalancing:*在我的角色中允许在AWS中执行我的策略的操作。

我还想知道当我的EC2实例中安装的nginx能够访问我的LoadBalancer而Traceroute无法访问它时怎么办。

是否可以使用通过AWS控制台手动创建的Loadbalancer直接访问我的服务?也许与NodePort或Ingress之类的东西。

所以我对此很固执:(请帮助。.

1 个答案:

答案 0 :(得分:0)

我必须在kube-controller yaml中将proxy设置为env变量。 另外,必须在no_proxy变量中设置一些ec2元数据ip地址,才能正常工作。