如何将kubernetes pod的主机名设置为其IP地址?

时间:2019-07-30 09:17:38

标签: kubernetes google-kubernetes-engine gke-networking

因此,我有一个部署,该部署创建了N个工作吊舱,并提供了一种在内部平衡流量的服务。我从VM访问服务。 VM发出请求,然后Pod用其主机名进行响应,以便VM可以与其直接建立连接(用于将结果从实际完成工作的Pod中拉回)。

我遇到的问题是,我的Pod返回的主机名是my-pod-5ff75ddd86-2xdjq,VM无法解析该主机名。我想知道是否可以将Pod的主机名设置为其IP,因为这意味着我不必更改Pod或VM中运行的工具中的任何代码。

2 个答案:

答案 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