kubernetes群集中的DNS地址

kubernetes群集中的DNS地址,dns,kubernetes,cluster-computing,Dns,Kubernetes,Cluster Computing,为了建立一个DNS服务,并将两个独立的kubernetes吊舱连接在一起,我遵循了以下步骤。一个应该用作网关,在端口80上侦听,另一个在端口90上侦听 当我使用他们的节点IP时,curl10.32.0.24和curl10.32.0.25:90我可以到达他们。然而,我不知道如何通过我的DNS服务访问它们。什么是URL 名称空间是默认值,这是kubectl集群信息的结果: Kubernetes master正在我的服务器的IP_上运行:6443 KubeDNS正在我的服务器的IP_上运行:6443

为了建立一个
DNS服务
,并将两个独立的
kubernetes吊舱
连接在一起,我遵循了以下步骤。一个应该用作网关,在端口80上侦听,另一个在端口90上侦听

当我使用他们的节点IP时,
curl10.32.0.24
curl10.32.0.25:90
我可以到达他们。然而,我不知道如何通过我的DNS服务访问它们。什么是
URL

名称空间
默认值
,这是
kubectl集群信息的结果:

Kubernetes master正在我的服务器的IP_上运行:6443
KubeDNS正在我的服务器的IP_上运行: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

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

以下是您使用的示例的摘录:

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

假设Kubernetes命名空间
bar
中有一个名为
foo
的服务。在命名空间
栏中运行的Pod可以通过对
foo
执行DNS查询来查找此服务。在命名空间
qux
中运行的Pod可以通过对
foo.bar
执行DNS查询来查找此服务

因此,集群中资源的DNS名称只存在于集群中

您可以通过NodeIPs:
curl 10.32.0.24
curl 10.32.0.25:90从外部网络调用该服务。这是一个正确的方法。如果要使用DNS名称从外部连接到群集,则应使用任何其他DNS服务将名称指向群集节点或负载平衡器


我建议您使用
Service
对象公开应用程序。下面是一些关于它的文章:,

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

以下是您使用的示例的摘录:

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

假设Kubernetes命名空间
bar
中有一个名为
foo
的服务。在命名空间
栏中运行的Pod可以通过对
foo
执行DNS查询来查找此服务。在命名空间
qux
中运行的Pod可以通过对
foo.bar
执行DNS查询来查找此服务

因此,集群中资源的DNS名称只存在于集群中

您可以通过NodeIPs:
curl 10.32.0.24
curl 10.32.0.25:90从外部网络调用该服务。这是一个正确的方法。如果要使用DNS名称从外部连接到群集,则应使用任何其他DNS服务将名称指向群集节点或负载平衡器


我建议您使用
Service
对象公开应用程序。这里有一些关于它的文章:,

我不打算从外部网络访问POD,我需要它们相互通信。为此,我需要知道这些豆荚的地址,以便在我的应用程序中硬编码。这就是DNS服务的目的,不是吗?是的。你有两种方法。一次性-使用pod的DNS名称,但我不建议您这样做。第二种是使用
服务
,它指向您的POD(它使用选择器而不是地址)<代码>服务
具有静态IP地址和静态DNS名称。所有DNS名称都由DNS服务处理。查看那篇文章-但问题仍然存在-当我想从一个pod中运行的应用程序向另一个pod中运行的应用程序发出此请求时,我的
HTTP GET
请求中的
URL
会是什么样子?如果您为您的应用程序提供服务,它将类似于
curl HTTP://
。Kubernetes会自动将您的请求路由到正确的pod。按照我上面提供的链接,它们包含了如何工作以及如何从不同的应用程序调用一个应用程序的说明。我不打算从外部网络访问POD-我需要它们相互通信。为此,我需要知道这些豆荚的地址,以便在我的应用程序中硬编码。这就是DNS服务的目的,不是吗?是的。你有两种方法。一次性-使用pod的DNS名称,但我不建议您这样做。第二种是使用
服务
,它指向您的POD(它使用选择器而不是地址)<代码>服务
具有静态IP地址和静态DNS名称。所有DNS名称都由DNS服务处理。查看那篇文章-但问题仍然存在-当我想从一个pod中运行的应用程序向另一个pod中运行的应用程序发出此请求时,我的
HTTP GET
请求中的
URL
会是什么样子?如果您为您的应用程序提供服务,它将类似于
curl HTTP://
。Kubernetes会自动将您的请求路由到正确的pod。下面是我在上面提供的链接,其中包含了它的工作原理以及如何从不同的应用程序调用一个应用程序的说明。