从同一VPC中的工作程序节点和其他EC2实例访问EKS DNS

时间:2019-05-06 10:25:21

标签: kubernetes amazon-eks kube-dns aws-eks eks

我已经按照AWS的k8s 1.11版入门指南创建了EKS集群。我没有更改任何配置,例如kube-dns。 如果我创建一个服务,比如说myservice,我想从其他ec2实例访问该服务,该实例不是该eks群集的一部分,但位于同一VPC中。 基本上,我也希望该DNS也可以作为群集外部实例的DNS服务器。我将如何做到这一点?

我已经看到kube-dns服务获得了群集IP,但是没有获得外部IP,这对于从群集外部访问它是否必要?

这是当前响应:

[ec2-user@ip-10-0-0-149 ~]$ kubectl get svc -n kube-system
NAME       TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)         AGE
kube-dns   ClusterIP   172.20.0.10   <none>        53/UDP,53/TCP   4d

我的VPC子网是10.0.0.0/16

我正在尝试从我的VPC中的其他实例访问此172.20.0.10 IP,但我无法达到,我认为这是可以预期的,因为我的VPC不知道任何172.20.0.10的子网范围。但是,如何使该dns服务可供VPC中的所有实例访问?

1 个答案:

答案 0 :(得分:2)

您面临的问题主要与DNS不相关。如您所说,您无法从其他实例访问ClusterIP,因为它是内部集群网络,并且无法从Kubernetes外部访问。

我建议您不要使用错误的方向Nginx Ingress,它允许您创建由AWS Load Balancer支持的Nginx,并在该Nginx上公开您的服务。

您可以进一步将Ingress与External-DNS插件集成在一起,这将允许您在Route 53中动态创建DNS记录。

这将花费一些时间来配置,但这是Kubernetes的方式。