【发布时间】:2021-08-06 23:04:33
【问题描述】:
我在 Azure 门户中启用了 AGIC,然后创建了 Fanout Ingress。但它不起作用。我检查了规则(ingress-appgateway > 规则 > 基于路径的路由)并且路径针对正确的后端池。
当我测试运行状况探测时,它失败了(“MC_...”资源组 > ingress-appgateway > 运行状况探测 > 单击测试) - 显示错误:
您的一个或多个后端实例运行状况不佳。推荐 在连接探针之前先解决这个健康问题
我试过了:
- 禁用和启用 AGIC -> 不起作用
- 使用
pathType: ImplementationSpecific(而不是pathType: Prefix)-> 不起作用 -
nginx.ingress.kubernetes.io/rewrite-target: /$1&/foo(/|$)(.*)-> 没用
在“ingress-appgateway”(Azure 门户)的概述页面顶部,显示错误:
您的一个或多个后端池中的所有实例都不正常。 当您尝试访问您的 托管在应用程序网关后面的应用程序。请检查 后端运行状况并解决问题。
仅当我删除路径(/foo 和/bar)并针对单个服务时才有效。
仅供参考,我正在使用 Azure CNI 网络和现有 VNet(专用子网)。
deployment.yaml
apiVersion: v1
kind: Service
metadata:
name: demo-web-app1
namespace: demo
spec:
selector:
app: demo-web-app1
type: ClusterIP
ports:
- protocol: TCP
port: 4200
targetPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: demo-web-app2
namespace: demo
spec:
selector:
app: demo-web-app2
type: ClusterIP
ports:
- protocol: TCP
port: 8080
targetPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: demo-web-app1
namespace: demo
spec:
replicas: 2
selector:
matchLabels:
app: demo-web-app1
template:
metadata:
labels:
app: demo-web-app1
spec:
containers:
- name: demo-web-app1
image: myacr.azurecr.io/myacr6472:375
ports:
- containerPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: demo-web-app2
namespace: demo
spec:
replicas: 3
selector:
matchLabels:
app: demo-web-app2
template:
metadata:
labels:
app: demo-web-app2
spec:
containers:
- name: demo-web-app2
image: myacr.azurecr.io/myacr6472:375
ports:
- containerPort: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-demo-web-app
namespace: demo
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/ssl-redirect: "false"
spec:
rules:
- http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: demo-web-app1
port:
number: 4200
- path: /bar
pathType: Prefix
backend:
service:
name: demo-web-app2
port:
number: 8080
【问题讨论】:
-
检查是否所有的 pod 都处于运行状态?
-
使用
nginx.ingress.kubernetes.io/rewrite-target没有意义,因为您没有使用 nginxingress 控制器。您正在使用应用程序网关入口控制器,因此请使用 appgw.ingress.kubernetes.io/backend-path-prefix 注释。将其设置为/并让我知道它是否解决了任何问题。 -
@Matt 它正在工作。我应该用你的提示回答吗?
-
当然,继续。 :D
-
@Matt 现在路由不适用于
/foo公开的服务。/foo工作正常(命中 API 服务),但我需要访问/foo/abc(AbcController)、/foo/xyz(XyzController),这些都不起作用。/foo/之后的任何 uri 都不起作用,有什么提示吗?
标签: azure kubernetes kubernetes-ingress azure-aks