我在裸机kubernetes集群上安装了kubeDNS . 我认为这将允许我访问here所描述的服务(http://对于那些不想关注链接的人),但当我跑
curl https://monitoring-influxdb:8083
我收到了错误
curl:(6)无法解析主机:monitoring-influxdb
当我在任何命名空间中的服务名称上运行curl时都是如此 . 这是我的kubDNS设置错误还是我需要采取不同的步骤来实现这一目标?当我在this article结束时运行测试时,我得到了预期的输出 .
以供参考:
output of kubectl get svc in default and kube-system namespaces
2 回答
您尝试的服务发现记录在https://kubernetes.io/docs/concepts/services-networking/dns-pod-serv ice,用于在一个pod中与现有服务通信,而不是从节点(或主服务器)与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
例如:
正如@Michael Hausenblas在评论中指出的那样,
curl http://monitoring-influxdb:8086
需要从一个pod中运行 . 这样做提供了预期的结果