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。下面是我在上面提供的链接,其中包含了它的工作原理以及如何从不同的应用程序调用一个应用程序的说明。