好吧,在过去的两天里,我与这份文档进行了战斗:
https://docs.microsoft.com/en-au/azure/aks/static-ip 和 https://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,因此很好地完成了服务主体分配,等等。但是,我是新来的,在k8上只有几个月。
预先感谢您的任何建议。
如果需要,我可以共享日志,但是我确实检查了从dns到入口路由的所有内容。我担心这个文档不好,只是在浪费时间。
答案 0 :(得分:0)
经过一段漫长的旅程后,为自己解答这个问题,因为当我长大而忘记了所做的事情,也许我的侄子有一天会节省一些时间。
在提供给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系统中(据我目前的知识,我找不到在系统中包含它的理由)。
从IP出现在kubectl get services --watch到curl -i IP能够接听电话的那一刻之间,大约有30多秒的延迟(在我的情况下)。因此,如果您具有自动化或运行状况探测器,请确保您有1-2分钟的等待时间。或者选择更好的节点,裸机。
祝你好运!
答案 1 :(得分:0)
根据您的评论,您似乎正在尝试覆盖externalIPs
,但使用controller.service.type
的头盔图表的默认值为LoadBalancer
。您可能想要做的是将controller.service.type
设置为LoadBalancer
,并用静态IP设置controller.service.loadBalancerIP
而不是覆盖externalIPs
。