【问题标题】:AKS with Static IP and Custom Cert / AKS Ingress issues具有静态 IP 和自定义证书/AKS 入口问题的 AKS
【发布时间】:2019-05-25 08:17:50
【问题描述】:

好吧,在过去的 2 天里,我一直在与这份文档作斗争:

https://docs.microsoft.com/en-au/azure/aks/static-iphttps://docs.microsoft.com/en-au/azure/aks/ingress-own-tls

首先,我确保我的 aks k8s 集群已升级到 1.11.5,因此在不同的资源组中拥有静态 IP 毫无疑问。

总的来说,我无法让静态 IP 真正发挥作用。动态的一切听起来都很好,但我无法为动态 IP 添加 A 记录。

我设法成功部署了所有内容,但是任何 curl ip.. 都不起作用。我确实在本地运行了 exec -ti,并且在本地一切都很好。

有人可以指点我运行此配置的 GitHub 配置或文章吗?作为免责声明,我非常了解 azure,服务主体的任务也做得很好,等等。但是,我是新手,在 k8s 上只有几个月。

提前感谢您的任何建议。

如果需要,我可以共享日志,但我相信我确实检查了从 dns 到入口路由的所有内容。我担心这个文档不好,我只是在浪费时间。

【问题讨论】:

  • 你可以使用 cname 和动态 ip,如果你非常了解 azure,你应该知道这一点。你的服务有效吗?你创建了你的入口吗?控制器呢?
  • 我现在在云服务中使用 cname,但由于一些技术和业务原因,我将无法在 k8s 中使用它。我确实创建了入口和控制器,都部署得很好,没有任何错误。
  • 因此您选择忽略我提出的其他 3 个问题?
  • 对不起,这不是故意的。是的,确实创建了入口和控制器。这是入口:apiVersion:extensions/v1beta1 种类:入口元数据:名称:kdwk-ingress 注释:kubernetes.io/ingress.class:nginx nginx.ingress.kubernetes.io/ssl-redirect:“false” nginx.ingress.kubernetes .io/rewrite-target: /# certmanager.k8s.io/cluster-issuer:letsencrypt-staging spec:-http:paths:-path:/backend:serviceName:dwk-at servicePort:80
  • 对于控制器,我使用了 helm install stable/nginx-ingress 并覆盖了 externalIP。

标签: azure kubernetes kubernetes-ingress azure-aks


【解决方案1】:

在经历了相当长的一段旅程之后回答自己这个问题,因为当我变老并且我忘记了我所做的事情时,也许有一天我的侄子会节省一些时间。

  1. 首先,这很重要:

在提供给 nginx-ingress 图表模板的值中,有 2 个注解很重要:

service.beta.kubernetes.io/azure-load-balancer-resource-group: "你的 IP 的资源组" externalTrafficPolicy: "本地"

以下是记录的所有值:https://github.com/helm/charts/blob/master/stable/nginx-ingress/values.yaml

图表可以部署在您服务的命名空间附近,它不应该在 kube-system 中(据我目前的知识,我找不到将它放在系统中的理由)。

  1. 第二,可能会产生误导

从 IP 出现在 kubectl get services --watch 中的那一刻到 curl -i IP 能够接听电话的那一刻,有大约 30+ 秒的延迟(在我的情况下)。因此,如果您有自动化或运行状况探测,请确保您有 1 到 2 分钟的等待时间。或者可能采用更好的节点、裸机。

  1. 查看 GCE 和 DO 的相同设置可能会有所帮助: https://cloud.google.com/community/tutorials/nginx-ingress-gke https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nginx-ingress-with-cert-manager-on-digitalocean-kubernetes DO的人也写得很好。

祝你好运!

【讨论】:

    【解决方案2】:

    根据您的 cmets,您似乎正在尝试覆盖 externalIPs,但使用 controller.service.type 的舵图的默认值 LoadBalancer。您可能想要做的是将controller.service.type 保留为LoadBalancer 并将controller.service.loadBalancerIP 设置为您的静态IP,而不是覆盖externalIPs

    这里有一些documentation from microsoft

    【讨论】:

    • 是的,我意识到并更正它以使用 loadBalancerIP;但即使使用它,我也没有得到它的工作,直到我完成了我提到的项目。另一个重要的项目,我忘了补充:使用公共 IP 基本 SKU 有效,但使用公共 IP 标准 SKU 没有。我不确定是否需要在此处设置任何其他内容才能使 Standard 正常工作,但现在我使用 Basic,因为我没时间了。
    • 对 IP 问题的另一条评论,这是高级原因:基本 sku 负载均衡器 .. 无法引用标准 sku 公共 IP... 这是文档注释:注意 Azure 负载均衡器可用在两个 SKU 中 - 基本和标准。有关详细信息,请参阅 Azure 负载均衡器 SKU 比较。 AKS 当前支持基本 SKU。如果您想使用标准 SKU,可以使用上游的 aks-engine。
    猜你喜欢
    • 2021-07-17
    • 2018-07-31
    • 2019-01-21
    • 2022-11-05
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 2020-08-03
    • 1970-01-01
    相关资源
    最近更新 更多