kubernetes集群中的DNS地址

时间:2018-04-22 22:38:00

标签: dns kubernetes cluster-computing

我正在关注this kubernetes tutorial以设置DNS service并将两个单独的kubernetes pods连接在一起。应该作为网关的一个正在侦听端口80,另一个在端口90上。

当我使用他们的节点IP时,curl 10.32.0.24curl 10.32.0.25:90我可以联系到他们。然而,我无法弄清楚,如何通过我的DNS服务访问它们。 URL会是什么?

Namespacedefault,这是kubectl cluster-info:的结果 Kubernetes master is running at IP_OF_MY_SERVER:6443 KubeDNS is running at IP_OF_MY_SERVER:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy 我的deployment.yaml几乎与教程中的相同:

apiVersion: v1
kind: Service
metadata:
  name: default-subdomain
spec:
  selector:
    name: busybox
  clusterIP: None
  ports:
  - name: foo # Actually, no port is needed.
    port: 80
    targetPort: 80
---
apiVersion: v1
kind: Pod
metadata:
  name: busybox1
  labels:
    name: busybox
spec:
  hostname: busybox-1
  subdomain: default-subdomain
  containers:
  - image: time-provider
    name: busybox
---
apiVersion: v1
kind: Pod
metadata:
  name: busybox2
  labels:
    name: busybox
spec:
  hostname: busybox-2
  subdomain: default-subdomain
  containers:
  - image:  gateway
    name: busybox

1 个答案:

答案 0 :(得分:2)

Kubernetes DNS服务在群集内部工作,并为pod提供DNS名称,而不是外部服务。

以下是您使用的instruction摘录:

  

群集中定义的每个服务(包括DNS服务器本身)都会分配一个DNS名称。默认情况下,客户端Pod的DNS搜索列表将包含Pod自己的命名空间和群集的默认域。最好通过示例说明:

     

假设Kubernetes名称空间foo中名为bar的服务。在命名空间bar中运行的Pod只需对foo执行DNS查询即可查找此服务。在命名空间quux中运行的Pod可以通过对foo.bar执行DNS查询来查找此服务。

因此,群集内资源的DNS名称仅存在于其中。

您通过NodeIP从外部网络呼叫该服务:curl 10.32.0.24curl 10.32.0.25:90。这是一种正确的方法。如果要使用DNS名称从外部连接到群集,则应使用任何其他DNS服务将名称指向群集节点或LoadBalancer。

我建议您使用Service对象来公开您的应用程序。以下是一些相关文章:ways to connectuse a Service to access applications.