如何在 AKS 上为负载均衡器服务设置域名

How to set a Domain Name for a Load Balancer Service on AKS

将 DNS 记录分配给负载平衡服务的过程是什么。

我在 AKS 上创建了一个类型为 LoadBalancer 的简单服务。该服务获得分配的外部 IP 并指向 pods 托管示例 hello world 应用程序。

如何使用 DNS 名称浏览我的应用程序,或首先为服务设置 DNS 名称。我可以成功浏览到IP。

服务 yml

apiVersion: v1
kind: Service
metadata:
 name: transactionapi-svc
 labels:
   version: v1
spec:
 type: LoadBalancer
 ports:
  - name: http
    port: 80
  - name: https
    port: 443
 selector:
  app: transaction-api

没有 built-in 到 kubernetes 的进程。您需要在外部执行此操作,比如使用 pulumi,或者您需要使用 external-dns。它会扫描您的入口定义并将匹配的 A 记录应用于配置的 dns 域。

那么发生了什么,它找到入口资源,找到与其关联的主机,找到 IP 地址并在 dns 中创建一个 A 记录,该记录与主机匹配,目标是入口侦听的 IP 地址。

对于您的问题,您可以创建负载均衡器类型的服务,并使用您之前使用 DNS 名称创建的静态负载均衡器 IP。然后是外部IP的FQDN,IP和FQDN都可以访问AKS pod中的应用程序。

按照Use a static public IP address with the Azure Kubernetes Service (AKS) load balancer, take care, when you create the public IP using the CLI command az network public-ip create中的步骤,不要忘记添加参数--dns-name

如果您也在 Azure 上托管 DNS,还有另一种方法。

当您在服务中定义负载均衡器(如您所拥有的)并进行部署时,AKS 会自动分配一个 public IP。此外,它还会创建一条 "alias" 记录。

在 Azure DNS 服务中,您可以将新记录集映射到此别名记录。我不知道这是如何在 Azure 后端进行管理的。如果 Azure 团队的人可以提供更多详细信息,那就太好了。

最好的方法是在元数据中使用注释, 我对其进行了测试,如果该服务存在并且您申请了,则无法使用,您需要先删除 svc 并使用此元数据重新创建。

像这个例子:

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/azure-dns-label-name: $label-name