将 AKS kubernetes 集群从 v1.23.8 升级到 v1.24.3 后,我们的 ingress 停止正常工作。事件中没有记录任何错误,并且 ingress-nginx pod 不会在控制台上报告任何错误。一切看起来都很好之内但是公网IP的所有端口对外都是关闭的。
甚至从集群内部 curl 集群中运行的 Web 应用程序也能正常工作。似乎只是外部端口的打开出现了问题。Ingress-nginx 是通过 helm release (HR v4.2.5) 部署的。
我感觉一定是入口或控制器的一些配置需要改变。
更新:我们全新安装了普通的 AKS 集群,并安装了helm install quickstart ingress-nginx/ingress-nginx
1.23.8(可以运行)、1.24.0(不可以运行)和 1.24.3(也不可以运行)。
有什么想法或指点吗?
答案1
我们发现了这个问题。
对于 v1.24.0 及更高版本的集群,负载均衡器的健康探测设置为 HTTP 和 HTTPS,而不是 TCP。当我们将健康探测更改为使用 TCP 时,一切又恢复正常。
针对此问题为 AKS 创建了一个问题: https://github.com/Azure/AKS/issues/3210
正确的解决方法是向 nginx 服务添加以下注释(请参阅上面 AKS 问题的链接):
values:
controller:
service:
annotations:
service.beta.kubernetes.io/azure-load-balancer-health-probe-request-path: /healthz