我正在研究一个新想法,为此我在 Azure Kubernetes 上创建了如下设置:
我正在尝试使用 AKS IP 从集群外部向负载均衡器提交 json 请求,但我遇到了 502 错误网关问题。
这是我的部署文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment-1
spec:
selector:
matchLabels:
app: deployment-1
replicas: 2
template:
metadata:
labels:
app: deployment-1
spec:
containers:
- name: api-1
image: dummy
imagePullPolicy: Always
ports:
- containerPort: 5000
nodeSelector:
agentpool: analytics1
---
apiVersion: v1
kind: Service
metadata:
name: service-1
annotations:
service.beta.kubernetes.io/azure-dns-label-name: dummy
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
spec:
type: LoadBalancer
ports:
- port: 5000
selector:
app: deployment-1
检查服务是否正在运行。
LAMU02Y36ZHJG5J% kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
cloud-api-v4-svc LoadBalancer 10.0.63.65 10.240.0.5 80:30054/TCP 37d
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 47d
service-1 LoadBalancer 10.0.55.129 10.240.0.9 5000:30507/TCP 41h
我使用这个 LoadBalancer IP (10.240.0.9) 来创建一个入口服务,如下所示。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-1
annotations:
kubernetes.io/ingress.class: addon-http-application-routing
spec:
rules:
- host: service-1.a3333fc09cb44a6b86b8.eastus.aksapp.io
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: service-1
port:
number: 5000
这是在创建入口之后。
LAMU02Y36ZHJG5J% kubectl get ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
ingress-1 <none> service-1.a333fc09cb44a6b86b8.eastus.aksapp.io 20.84.1.20 80 65m
所以我认为一切都很好,然后我继续创建我的 AKS 应用程序网关,以便可以从任何 IP 访问它。我为 AKS 应用程序网关指定的内容。 后端池 IP - 20.84.1.20 端口 80(这是入口 IP。我不确定这是否是我出错的地方)
配置后,现在当我尝试按原样访问应用程序网关 IP 时,出现 502 Bad Gateway 错误。我对 AKS 很陌生
答案 0 :(得分:1)
我在您的 Ingress 中没有看到以下注释..
你可以添加它们并尝试吗?
appgw.ingress.kubernetes.io/use-private-ip: "false"
kubernetes.io/ingress.class: azure/application-gateway
您可以在此处查看 Troubleshoot common questions or issues with Ingress Controller 中的更多详细信息。