我已经按照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中的所有实例访问?
答案 0 :(得分:2)
您面临的问题主要与DNS不相关。如您所说,您无法从其他实例访问ClusterIP,因为它是内部集群网络,并且无法从Kubernetes外部访问。
我建议您不要使用错误的方向Nginx Ingress,它允许您创建由AWS Load Balancer支持的Nginx,并在该Nginx上公开您的服务。
您可以进一步将Ingress与External-DNS插件集成在一起,这将允许您在Route 53中动态创建DNS记录。
这将花费一些时间来配置,但这是Kubernetes的方式。