如何使用minikube的DNS?

时间:2019-11-21 17:11:11

标签: kubernetes dns minikube

如何使用minikube(群集)的DNS?我想接收与所有用于选定的无头服务的Pod相关联的IP地址吗?我不想将其暴露在群集之外。我目前正在创建后端层。

如以下答案所述: What exactly is a headless service, what does it do/accomplish, and what are some legitimate use cases for it?

„ DNS服务器将返回该服务的多个A记录,而不是返回单个DNS A记录,每个记录都指向当时支持该服务的单个pod的IP。” < / p>

因此后端层中的Pod可以彼此通信。

我不能使用dig命令。它没有安装在minikube中。最终我该如何安装?没有apt可用。

我希望这可以更准确地说明我想要实现的目标。

2 个答案:

答案 0 :(得分:1)

您提到要接收与选定服务名称的Pod关联的IP地址,以测试无头服务的工作方式。

仅出于测试目的,您可以使用端口转发。您可以将流量从本地计算机转发到群集中的dns pod。为此,您需要运行:

kubectl port-forward svc/kube-dns -n kube-system 5353:53

,它将在您的主机上公开kubs-dns服务。然后,您只需要使用dig命令(或替代方法)来查询dns服务器。

dig @127.0.0.1 -p 5353 +tcp +short <service>.<namespace>.svc.cluster.local

您还可以从群集内部测试dn,例如通过运行带有交互式外壳的pod:

kubectl run --image tutum/dnsutils dns -it --rm -- bash
root@dns:/# dig +search <service>

让我知道它有所帮助。

答案 1 :(得分:0)

kubernetes/minikube issue 4397

所示
  

默认情况下,容器没有IP地址。
  您将要使用minikube serviceminikube tunnel来获取端点信息。

请参阅“ hello-minikube/ Create a service”:

  

默认情况下,只能通过Kubernetes集群中的内部IP地址访问Pod。

     

要使hello-node容器可以从Kubernetes虚拟网络外部访问,您必须将Pod作为Kubernetes服务公开。

     

使用kubectl expose命令将Pod公开到公共互联网:

kubectl expose deployment hello-node --type=LoadBalancer --port=8080
     

--type=LoadBalancer标志指示您要在群集外部公开服务。

     

查看您刚刚创建的服务:

kubectl get services

NAME         TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
hello-node   LoadBalancer   10.108.144.78   <pending>     8080:30369/TCP   21s
kubernetes   ClusterIP      10.96.0.1       <none>        443/TCP      
     

在Minikube上,LoadBalancer类型使服务可以通过minikube service命令访问。

     

运行以下命令:

minikube service hello-node