0

我使用内部入口 Nginx 创建了 AKS。这在集群中如下所示。

在此处输入图像描述

然后我创建了 Azure 私有 DNS 服务。在 Azure 私有 DNS 服务中,我创建了一个“记录集”,例如

块引用

在此处输入图像描述

从技术上讲,我应该能够使用promotion.mydomain.com 访问LoadBalancer External ip(例如)。对此,当我在浏览器中点击http://promotion.mydomain.com时出现“502 Bad Gateway”错误。有什么建议吗?

4

2 回答 2

1

我遇到了同样的问题,并且最近能够解决它。

我创建了另一个 Ingress,但在所需的命名空间(我的是默认命名空间)中,定义如下:

(我已启用 tls 但您可以删除该部分)

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
  name: my-custom-ingress
spec:
  tls:
  - hosts:
    - foo.mydomain.com
    secretName: my-tls-secret
  rules:
    - host: foo.mydomain.com
      http:
        paths:
        - path: /
          backend:
            serviceName: my-foo-app-service-nodeport
            servicePort: 4444


首先找到你的 nginx 入口的外部 IP 并牢记:

kubectl get svc --namespace ingress-basic

然后在 Azure DNS 区域中,您可以将域附加到 Azure 资源:

  1. 打开天蓝色门户。
  2. 进入MC_...由 AKS 群集创建的资源组。
  3. 找到 LoadBalancer 资源并单击它。
  4. 在 LoadBalancer 上,进入“前端 IP 配置”。然后,您将看到具有相关 ResourceId 的公共 IP 列表(例如:11.22.33.44 (xxx-yyyy-bbb))
  5. 找到与您在 LoadBalancer 上找到的 LoadBalancer IP 对应的 IP(在第 1 步之前)并记住关联的对象 ID。
  6. 打开您的 Azure DNS 区域并创建新域(或编辑一个)
  7. 设置“别名记录集:是”然后“别名类型:资源”
  8. 在“Azure 资源”下,找到具有您在步骤 5 中找到的 ResourceId 的资源并选择它。
  9. 节省

现在它应该可以工作了。

于 2020-01-24T16:46:29.727 回答
1

我看到您的目的是使用内部 Ingress Nginx 创建 AKS 并使用自定义 DNS。我看到你的 Ingress 外部 IP 是 10.240.0.42。它似乎是您 AKS 节点所在的子网的私有 IP。

所以我认为您需要创建一个 Azure 应用程序网关或 Azure 负载均衡器来将您的请求从 Internet 路由到您的内部 Ingress Nginx 接口。并且A记录也需要更改,您需要将IP更改为您从Azure应用程序网关和Azure负载均衡器中选择的一个的公共IP。我想您知道您需要在 DNS 所在的 DNS 服务器中更新您的自定义 DNS 设置。

当所有的事情都做完了。请求路由路径将如下所示:

  1. 互联网(您的自定义 DNS)
  2. Azure DNS 服务器
  3. 应用程序网关或负载均衡器的 Azure 公共 IP(这是我认为您错过的)
  4. 10.240.0.42(入口 Nginx 内部 IP)
  5. AKS 入口 Nginx
  6. 服务
  7. 部署或 Pod
于 2020-01-22T02:41:19.257 回答