**关闭。**这个问题是not about programming or software development。目前不接受答复。
这个问题似乎不是关于a specific programming problem, a software algorithm, or software tools primarily used by programmers的。如果你认为这个问题与another Stack Exchange site的主题有关,你可以留下评论,解释在哪里可以回答这个问题。
昨天关门了。
Improve this question
我的问题是,Kubernetes集群的DNS IP或网关IP是否与主机相同。
我正在做一些学习,并在POD中部署了一个Web服务。此服务正在公开终结点http://localhost:8080/health。这个API在内部调用了一个端点https://www.google.com,并且工作正常。
Kubernetes如何解析域名并调用外部端点https://www.google.com?
这是我的理解,如果我错了请纠正我:
- POD网络调用Kubernetes的kube-DNS服务器的DNS IP地址。
- kube-DNS服务器的DNS IP地址类似于Internet提供商的主机。因此,kube-DNS服务器调用该DNS IP地址来解析域名。
- 域名解析完成后,kube-DNS将解析后的IP地址发送给POD,然后调用POD解析IP地址。
- 同样,此解析的IP不属于POD的同一网络。所以,这将被路由到集群的网关IP.而且集群的这个网关IP应该和主机差不多。由于主机网关IP是Internet提供商的,因此集群网关IP也将指向Internet提供商。
- Internet提供商对实际端点的调用和响应发送回群集网关IP,POD从那里获得响应。
如果我是对的,那么Kubernetes集群中的外部服务的目的是什么?
1条答案
按热度按时间omvjsjqw1#
根据您提供的数据,可以认为您询问的是基于数据中心环境/服务器的部署,并且是基于单节点的部署。
有一个服务器,在该服务器上安装了Kubernetes集群,在创建单节点集群后,您已经在此Kubernetes集群上部署了应用程序。
因此,为了澄清您的查询,您需要检查的第一件事是您的kubernetes集群和主机的网络CIDR(Node:在kubernetes中,用于基本机器的术语是node)将是不同的,如果你不公开应用程序运行的端口,你甚至不能从不同的POD访问应用程序。
为了使您的应用程序可以在外部访问,您需要使用以下Kubernetes服务:
ClusterIP(默认)-将Service暴露在集群内部IP上。此类型使服务只能从群集内访问。
NodePort-通过NAT将Service暴露在集群中每个选定Node的同一端口上。使用以下命令使服务可从群集外部访问。ClusterIP的超集。
LoadBalancer-在当前云上创建一个外部负载均衡器(如果支持),并为Service分配一个固定的外部IP。NodePort的超集。
ExternalName-将服务Map到externalName字段的内容(例如foo.bar.example.com),通过返回具有其值的CNAME记录。没有设置任何类型的代理。此类型需要kube-dns v1.7或更高版本,或CoreDNS版本0.0.8或更高版本。
请通过kubernetes官方论坛上的“使用服务公开您的应用”tutorial了解更多信息。
一旦你将你的应用程序从你的kubernetes网络暴露到私有网络(主机网络),你就可以使用防火墙或dns服务器进行重定向。
所以流程看起来是这样的