我跟踪这个kubernetes教程是为了建立一个DNS service,并将两个独立的kubernetes pods连接在一起。其中一个应该充当网关,它正在监听端口80,另一个在端口90上。
当我使用他们的节点IP,curl 10.32.0.24和curl 10.32.0.25:90时,我可以联系到他们。尽管如此,我还是想不出如何通过我的DNS服务来访问它们。URL会是什么?
Namespace是default,这是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 My 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发布于 2018-04-23 12:38:03
Kubernetes DNS服务在集群中工作,并为pods提供DNS名称,而不是为外部服务提供DNS名称。
下面是您使用的说明的摘录:
在集群中定义的每个服务(包括DNS服务器本身)都被分配一个DNS名称。默认情况下,客户端Pod的DNS搜索列表将包括Pod自己的命名空间和集群的默认域。最好的例子是: 假设在Kubernetes命名空间
foo中有一个名为bar的服务。在命名空间bar中运行的Pod只需为foo执行一个DNS查询就可以查找此服务。在命名空间quux中运行的Pod可以通过对foo.bar执行DNS查询来查找此服务。
因此,集群中资源的DNS名称仅存在于集群中。
您可以通过NodeIP:curl 10.32.0.24和curl 10.32.0.25:90从外部网络调用服务。这是一种正确的方式。如果要使用DNS名称从外部连接到群集,则应使用任何其他DNS服务将名称指向群集节点或LoadBalancer。
我建议您使用Service对象公开应用程序。这里有一些关于它的文章:连接方式,使用服务访问应用程序。
https://stackoverflow.com/questions/49971397
复制相似问题