AKS中Ingress Controller未监听5050端口TCP流量问题求助
AKS中Nginx Ingress开放5050端口的正确配置方案
配置可行性说明
这种配置完全可行,Nginx Ingress Controller支持通过ConfigMap实现TCP/UDP端口的流量转发,只要配置步骤正确即可生效。
关键配置检查与修正步骤
1. 确认TCP ConfigMap配置准确性
确保nginx-ingress命名空间下的TCP ConfigMap(默认名称为tcp-services)正确映射5050端口到你的后端Service:
apiVersion: v1 kind: ConfigMap metadata: name: tcp-services namespace: nginx-ingress data: 5050: "你的应用命名空间/后端Service名称:5050"
注意:键为Ingress Controller要监听的端口,值必须遵循命名空间/Service名:Service端口的格式,需与后端Service的端口完全匹配。
2. 验证Ingress Controller的Pod模板配置
需在Ingress Controller的Deployment或DaemonSet中添加ConfigMap挂载及端口暴露配置:
- 添加volume定义:
volumes: - name: tcp-services configMap: name: tcp-services
- 在容器的
volumeMounts中挂载ConfigMap:
volumeMounts: - mountPath: /etc/nginx/tcp-services.d/ name: tcp-services readOnly: true
- 确保容器端口中暴露5050:
ports: - name: tcp-5050 containerPort: 5050 protocol: TCP
若使用Helm部署Ingress Controller,可直接通过参数设置:
helm upgrade nginx-ingress ingress-nginx/ingress-nginx \ --namespace nginx-ingress \ --set tcp.5050="你的应用命名空间/后端Service名称:5050"
3. 配置Ingress Controller的Service暴露端口
需在Ingress Controller的Service(默认名称为nginx-ingress-controller)中添加5050端口的对外暴露:
apiVersion: v1 kind: Service metadata: name: nginx-ingress-controller namespace: nginx-ingress spec: ports: - name: tcp-5050 port: 5050 targetPort: 5050 protocol: TCP selector: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/instance: nginx-ingress
如果是LoadBalancer类型Service,外部流量会通过该端口转发至Ingress Controller的5050端口,再路由到后端Service。
4. 验证配置生效
- 重启Ingress Controller Pod使配置生效:
kubectl rollout restart deployment nginx-ingress-controller -n nginx-ingress
- 检查Pod状态:
kubectl get pods -n nginx-ingress
- 测试端口连通性:
# 集群内部测试 kubectl exec -it <任意集群内运行的Pod> -- nc -zv <Ingress Controller Service IP> 5050 # 外部测试(LoadBalancer类型Service) nc -zv <Service外部IP> 5050
内容的提问来源于stack exchange,提问作者Neel
相关产品推荐
相关产品推荐

