【问题标题】:How to set a kubernetes pod's hostname to its IP address?如何将 kubernetes pod 的主机名设置为其 IP 地址?
【发布时间】:2019-12-07 15:29:09
【问题描述】:

所以我有一个部署,它创建了 N 个工作 pod,以及一个内部平衡流量的服务。我从 VM 访问该服务。 VM 发出请求,Pod 用其主机名进行响应,以便 VM 可以直接连接到它(这用于从实际完成工作的 Pod 中拉回结果)。

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

【问题讨论】:

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


    【解决方案1】:

    如果您不想更改代码,则需要公开集群的内部 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"
    

    【讨论】:

      【解决方案2】:

      根据您的集群设置,您的 VM 可能即使使用其 IP 也无法连接到该 pod。默认情况下,Pod IP 位于只能在集群内部访问的覆盖网络上。

      如果虚拟机在集群中,您确定您针对 kube DNS 正确引用了 pod 主机名吗? Here are the docs on DNS for pods

      【讨论】:

      • Tbh,我有几件东西可以访问该吊舱,有些是虚拟机,有些是基于集群的,有些可能是其他的,我正在尝试弄清楚我是如何让该吊舱的流量可从任何地方访问,以及我如何返回可从任何地方使用的主机名/IP。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-24
      • 2019-09-29
      • 1970-01-01
      • 2011-03-12
      相关资源
      最近更新 更多