因此,我有一个部署,该部署创建了N个工作吊舱,并提供了一种在内部平衡流量的服务。我从VM访问服务。 VM发出请求,然后Pod用其主机名进行响应,以便VM可以与其直接建立连接(用于将结果从实际完成工作的Pod中拉回)。
我遇到的问题是,我的Pod返回的主机名是my-pod-5ff75ddd86-2xdjq,VM无法解析该主机名。我想知道是否可以将Pod的主机名设置为其IP,因为这意味着我不必更改Pod或VM中运行的工具中的任何代码。
答案 0 :(得分:2)
如果您不想更改代码,则需要公开群集的内部kube-dns
,并将其设置为VM的默认DNS服务器。
关于另一个问题,请提供一些信息
How to expose kube-dns service for queries outside cluster?
在nginx-controller文档上,您有一个很好的示例,公开了UDP上的53端口
https://kubernetes.github.io/ingress-nginx/user-guide/exposing-tcp-udp-services/
通过启动并运行Nginx控制器,您必须正确创建一个供该控制器使用的入口,并只需添加以下configMap
:
apiVersion: v1
kind: ConfigMap
metadata:
name: udp-services
namespace: ingress-nginx
data:
53: "kube-system/kube-dns:53"
答案 1 :(得分:1)
根据您的群集设置,您的VM可能甚至无法使用其IP连接到Pod。默认情况下,pod IP位于覆盖网络上,该网络只能通过集群内部的形式访问。
如果VM在群集中,您确定针对kube DNS正确引用了pod主机名吗? Here are the docs on DNS for pods。