【问题标题】:Azure k8s load balancer DNS nameAzure k8s 负载均衡器 DNS 名称
【发布时间】:2020-05-29 11:45:12
【问题描述】:

我有一个 Azure Kubernetes 服务集群,运行版本 1.15.7。该集群最近替换了旧的集群版本 (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 添加到流量管理器实例。

自从升级到 1.15 后,这似乎不再起作用了。我们可以完成上述所有步骤,但是一旦创建了服务/负载均衡器,公共 IP 就会丢失其 DNS 名称,这会导致它从流量管理器中被逐出。我们可以重设名称,但在 36-48 小时内它会再次丢失。我怀疑 AKS 正在尝试将名称应用于关联的 IP 地址,但由于我没有在上面定义一个,它只是将其设置为 null。

如何告诉 AKS 为公共 IP 分配什么名称?更好的是,我可以跳过静态公共 IP 并让 AKS 配置动态地址,然后简单地将 DNS 名称添加到流量管理器吗?

【问题讨论】:

    标签: azure kubernetes


    【解决方案1】:

    这确实是 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。

    【讨论】:

    • 我尝试设置 service.beta.kubernetes.io/azure-dns-label-name 但它似乎不起作用。它适用于 1.16.x 集群吗?该服务的地址是什么? label.northeurope.cloudapp.azure.com?
    猜你喜欢
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-14
    • 2021-05-09
    • 1970-01-01
    • 2013-01-02
    相关资源
    最近更新 更多