【问题标题】:Kubernetes internal wildcard DNS recordKubernetes 内部通配符 DNS 记录
【发布时间】:2019-05-22 09:13:05
【问题描述】:

我想创建一个通配符 DNS 记录,它映射到我的 k8s 集群中的虚拟 IP。这是因为我希望从我的 pod 到给定名称的任何子域的请求映射到一组特定的端点。 IE。请求来自:

something.my-service.my-namespace.svc.cluster.local
something-else.my-service.my-namespace.svc.cluster.local
any-old-thing-my-pod-came-up-with.my-service.my-namespace.svc.cluster.local

全部解析到同一个虚拟 IP,因此解析到同一个 集群(即我希望这些请求以与服务相同的方式路由到端点)。

我见过一些其他解决方案,这些解决方案涉及创建和修改集群 DNS 服务(即 kube-dns 或 CoreDNS)配置。这对我不起作用——我问这个问题的主要原因是为了实现声明性配置。

我尝试过的:

  • 服务.metadata.name: '*.my-service'。失败,因为 '*.my-service' 不是有效的服务名称。
  • 服务.spec.ports.name: '*'。不是有效的端口名称。

不是一个选项:

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    kubernetes 服务不支持通配符 dns。您可以做的是使用入口控制器在服务前面。通过 ingress,您可以使用通配符 dns。参考以下公关

    https://github.com/kubernetes/kubernetes/pull/29204

    【讨论】:

    • 我确实考虑过使用入口,我应该在我的问题中提到。但是,将这些内部服务暴露在外部是不允许的。感谢您的回答 - 我会更新问题以反映这对我来说不可行。
    • 您好,请详细说明一下。你能看一下“Pod’s hostname and subdomain fields”吗?
    • 我假设你的意思是我。我已经扩展了这个问题来解释为什么 pod 主机名/子域字段对我不起作用。感谢您的链接,不幸的是我已经找到了那个,并且可能应该已经在问题中提到它。
    猜你喜欢
    • 2020-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    • 2019-07-06
    • 1970-01-01
    • 2020-10-03
    相关资源
    最近更新 更多