如何使用minikube(群集)的DNS?我想接收与所有用于选定的无头服务的Pod相关联的IP地址吗?我不想将其暴露在群集之外。我目前正在创建后端层。
„ DNS服务器将返回该服务的多个A记录,而不是返回单个DNS A记录,每个记录都指向当时支持该服务的单个pod的IP。” < / p>
因此后端层中的Pod可以彼此通信。
我不能使用dig命令。它没有安装在minikube中。最终我该如何安装?没有apt可用。
我希望这可以更准确地说明我想要实现的目标。
答案 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 service
或minikube 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