Kubernetes 上的服务发现
Service discovery on Kubernetes
我在裸机 kubernetes 集群上设置了 kubeDNS。我认为这将允许我访问所描述的服务 here(http:// 对于那些不想遵循 link 的人),但是当我 运行
curl https://monitoring-influxdb:8083
我收到错误
curl: (6) Could not resolve host: monitoring-influxdb
当我 运行 卷曲任何命名空间中的服务名称时,情况就是如此。这是我的 kubDNS 设置错误还是我需要采取不同的步骤才能实现此目的?当我 运行 在 this article 结束时进行测试时,我得到了预期的输出。
供参考:
output of kubectl get svc in default and kube-system namespaces
您正在尝试的服务发现记录在 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
例如:
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
正如@Michael Hausenblas 在评论中指出的那样,curl http://monitoring-influxdb:8086
需要来自 pod 中的 运行。这样做提供了预期的结果
我在裸机 kubernetes 集群上设置了 kubeDNS。我认为这将允许我访问所描述的服务 here(http:// 对于那些不想遵循 link 的人),但是当我 运行
curl https://monitoring-influxdb:8083
我收到错误
curl: (6) Could not resolve host: monitoring-influxdb
当我 运行 卷曲任何命名空间中的服务名称时,情况就是如此。这是我的 kubDNS 设置错误还是我需要采取不同的步骤才能实现此目的?当我 运行 在 this article 结束时进行测试时,我得到了预期的输出。
供参考:
output of kubectl get svc in default and kube-system namespaces
您正在尝试的服务发现记录在 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
例如:
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
正如@Michael Hausenblas 在评论中指出的那样,curl http://monitoring-influxdb:8086
需要来自 pod 中的 运行。这样做提供了预期的结果