Kubernetes的服务发现

时间:2017-10-23 14:29:29

标签: kubernetes kube-dns

我在裸机kubernetes集群上安装了kubeDNS。我认为这样可以让我按照here所述的方式访问服务(http://对于那些不想关注链接的人),但是当我运行时

curl https://monitoring-influxdb:8083

我收到错误

  

卷曲:(6)无法解析主机:monitoring-influxdb

当我在任何名称空间中对服务名称运行curl时都是如此。这是我的kubDNS设置错误还是我需要采取不同的步骤来实现这一目标?当我在this article结束时运行测试时,我得到了预期的输出。

供参考:

kubeDNS controller yaml files

kubeDNS service yaml file

kubelet flags

output of kubectl get svc in default and kube-system namespaces

2 个答案:

答案 0 :(得分:5)

您尝试的服务发现记录在https://kubernetes.io/docs/concepts/services-networking/dns-pod-serv ice,用于通信与现有服务通信,而不是来自节点(或主人)与Kubernetes服务部门联系。

您需要以<servicename>.<namespace><servicename>.<namespace>.svc.cluster.local的形式利用服务的DNS。要在运行中看到这一点,请使用busybox启动交互式pod(或使用您自己的现有pod):

  • kubectl run -i --tty alpine-interactive --image=alpine --restart=Never

并在那里提供的shell中,创建一个nslookup命令。从您的示例中,我猜测您正在尝试从https://github.com/kubernetes/heapster/tree/master/deploy/kube-config/influxdb访问InfluxDB,然后它将被安装到kube-system命名空间中,并且您将从另一个Pod内部使用的服务名称安装到集群将是:

  • monitoring-influxdb.kube-system.svc.cluster.local

例如:

kubectl run -i --tty alpine --image=alpine --restart=Never
If you don't see a command prompt, try pressing enter.
/ # nslookup monitoring-influxdb.kube-system.svc.cluster.local
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      monitoring-influxdb.kube-system.svc.cluster.local
Address 1: 10.102.27.233 monitoring-influxdb.kube-system.svc.cluster.local

答案 1 :(得分:0)

正如@Michael Hausenblas在评论中指出的那样,curl http://monitoring-influxdb:8086需要从一个pod中运行。这样做提供了预期的结果