Azure k8s负载平衡器DNS名称

时间:2020-02-13 17:23:44

标签: azure kubernetes

我有一个运行版本1.15.7的Azure Kubernetes Service群集。该群集最近替换了较旧的群集版本(1.12.something)。过去,一旦各种服务Pod启动并运行,我们将在Azure门户中创建一个公共IP资源并为其分配一个名称,然后创建一个Service资源,如下所示:

apiVersion: v1
kind: Service
metadata:
  name: myservice-frontend
  labels:
    app: myservice
spec:
  ports:
  - port: 80
    name: myservice-frontend
    targetPort: 80
  - port: 443
    name: myservice-frontend-ssl
    targetPort: 443
  selector:
    app: myservice-frontend
  type: LoadBalancer
  loadBalancerIP: 1.2.3.4

最后,我们将公共IP添加到Traffic Manager实例。

自从升级到1.15以来,这似乎不再起作用。我们可以执行上述所有步骤,但是一旦创建了服务/负载平衡器,公共IP就会丢失其DNS名称,这会导致它从Traffic Manager中驱逐出去。我们可以重命名,但在36-48小时内会再次丢失。我的怀疑是AKS尝试将名称应用到关联的IP地址,但是由于我没有在上面定义名称,因此将其设置为null。

我如何告诉AKS为公共IP分配什么名称?更好的是,我可以跳过静态公共IP并让AKS提供动态地址,而只需将DNS名称添加到Traffic Manager吗?

1 个答案:

答案 0 :(得分:0)

这确实是AKS 1.15.7

中的错误

Azure - PIP dns label will be default deleted

结果是,这是1.15中新功能的一部分,该功能允许在服务配置中设置LoadBalancer IP的DNS标签。因此,上面的定义可以变成:

apiVersion: v1
kind: Service
metadata:
  name: myservice-frontend
  labels:
    app: myservice
  annotations:
    service.beta.kubernetes.io/azure-dns-label-name: myservice-frontend
spec:
  ports:
  - port: 80
    name: myservice-frontend
    targetPort: 80
  - port: 443
    name: myservice-frontend-ssl
    targetPort: 443
  selector:
    app: myservice-frontend
  type: LoadBalancer

该服务将自动分配一个带有注释DNS名称的新静态IP。