【问题标题】:azure kubernetes-internal load balancer access by dns name instead of ip addressazure kubernetes-internal load balancer 通过 dns 名称而不是 ip 地址访问
【发布时间】:2019-06-09 12:07:52
【问题描述】:

问题陈述

我们计划使用 azure api 管理服务作为 AKS 的反向代理。我参考了以下 URL 来使用 AKS 配置 azure api manager。虽然它提供了有关节点端口的信息,但同样可以通过内部负载均衡器 IP 地址应用。

https://fizzylogic.nl/2017/06/16/how-to-connect-azure-api-management-to-your-kubernetes-cluster/

我们目前有多个环境,例如 dev1、dev2、dev3、dev、uat、stage、prod。 我们正在尝试自动化此配置步骤,不需要绑定到特定 IP,但需要指向与 k8s 的内部负载均衡器关联的 dns 名称。

【问题讨论】:

    标签: azure kubernetes azure-api-management azure-aks


    【解决方案1】:

    如果您在服务上使用注释来使用内部负载平衡器,您将在 vNet 上为您的服务获得一个 IP 地址,而不是外部 IP。

    注释: service.beta.kubernetes.io/azure-load-balancer-internal: "true"

    然后,您可以使用 external-dns 服务 (https://github.com/kubernetes-incubator/external-dns) 在 Azure DNS 区域内为您的服务自动创建 DNS 条目。然后,您应该能够解析到服务 DNS 名称。

    虽然没有明确支持,但它也适用于私有 DNS 区域。

    【讨论】:

    • 嗨,本,感谢您的意见。我尝试使用这个框架来绑定我的 k8s 服务。但观察到它删除了同一服务的其他环境的A记录。我们有什么设置可以避免删除同一服务的A记录吗?
    【解决方案2】:

    @Ben 回答了部分问题。我会谨慎使用 external-dns 开源,因为您可能不喜欢创建对这个非常重要的功能的依赖。它需要您授予额外的权限!

    您将需要一个虚拟专用 ip,它是通过内部负载平衡器注释实现的,并且可以正常工作。我最近用内部负载平衡器记录了 tls/ssl 的结束,可以在 https://blogs.aspnet4you.com/2019/01/06/end-to-end-tlsssl-offloading-with-application-gateway-and-kubernetes-ingress/ 找到它。

    请记住,在我删除 http 应用程序路由插件之前,我的解决方案运行良好。为什么?该插件附带 Azure Dns(公共)和公共负载均衡器。当我删除附加组件时,它们都被永久删除,但删除破坏了与内部负载均衡器的 vip 关联的 dns 条目。我不打算删除 dns 区域。我尝试创建新的 DNS 区域并添加带有私有 IP 的记录没有奏效。 Kubernetes 无法解析 fqdn。尝试使用 Azure 私有 DNS,但它也无法解析!我尝试将 configmap 与 kube-dns 一起使用没有奏效,如果我包含上游,它会破坏其他东西的 dns 解析!所以,调查还在继续!

    我很想听听您是如何解决 fqdn 问题的。

    乐观地说,我认为基于 VM 的自定义 dns 服务器可能是不错的选择,您可能会拥有一个用于混合解决方案的服务器。

    【讨论】:

    • 只是为了分享我的经验,我不得不创建一个带有几个空子网的空 vNET,并创建了向新 vNET 注册的私有 DNS 区域。提供了一个全新的 aks 集群,该集群具有与地址规范匹配的高级网络,安装并配置了所有组件和容器映像。我可以在应用程序网关无缝使用 FQDN(在私有 dns 区域指定的记录),并且在所有 PODS 中完全解析 FQDN!是的,重做 aks 集群是一项很好的工作,但我有脚本可以节省我的时间。只要您从头开始,Azure 私有 DNS 区域就可以工作!
    【解决方案3】:

    应该可以将 Azure VNET 配置为依赖您自己的 DNS 服务器:https://docs.microsoft.com/en-us/azure/virtual-network/virtual-networks-name-resolution-for-vms-and-role-instances#name-resolution-that-uses-your-own-dns-server。一旦设置 APIM 将使用它来解析所有传出请求的地址。只要确保您也支持解析公共地址,APIM 几乎没有依赖项,否则它将无法工作。

    【讨论】:

      猜你喜欢
      • 2019-01-30
      • 2015-09-17
      • 2021-10-10
      • 2015-01-01
      • 1970-01-01
      • 2012-04-24
      • 2021-06-13
      • 1970-01-01
      • 2018-02-24
      相关资源
      最近更新 更多