AKS集群如何配置Nginx Ingress Controller开放TCP端口11112访问服务
如何让AKS集群中的服务通过TCP端口11112对外访问
你的Deployment和Service基础配置已经完成了容器端口暴露、Service端口映射的工作,核心需要针对Ingress Controller做TCP流量转发配置(默认Ingress仅处理HTTP/HTTPS流量)。以AKS中最常用的NGINX Ingress Controller为例,具体修改步骤如下:
1. 创建/修改TCP转发配置的ConfigMap
在Ingress Controller所在的命名空间(通常是kube-system或ingress-nginx)中,添加TCP端口映射规则,将外部访问端口指向你的服务:
apiVersion: v1 kind: ConfigMap metadata: name: nginx-ingress-tcp namespace: kube-system data: "11112": "default/xxx-py:11112" # 格式:"外部访问端口": "服务所在命名空间/服务名称:服务端口"
如果你的xxx-py服务不在default命名空间,替换成对应的命名空间即可。
2. 更新Ingress Controller的Pod配置
将上述ConfigMap挂载到Ingress Controller的Pod中,并暴露对应的TCP端口:
找到Ingress Controller的Deployment/DaemonSet(通常名为nginx-ingress-controller),修改容器配置:
spec: template: spec: containers: - name: nginx-ingress-controller ports: - name: tcp-11112 containerPort: 11112 hostPort: 11112 # 若需要直接绑定节点端口则保留,否则可移除 volumeMounts: - name: tcp-config mountPath: /etc/nginx/tcp-services.d volumes: - name: tcp-config configMap: name: nginx-ingress-tcp
修改完成后应用配置,Ingress Controller Pod会自动重启加载新规则。
3. 验证访问
待Ingress Controller重启完成后,即可通过以下方式访问服务:
- 若Ingress Controller使用Load Balancer:通过Load Balancer的公网IP + 11112端口访问
- 若使用NodePort:通过集群节点IP + 11112端口访问
补充:Helm安装的Ingress Controller简化配置
如果你的NGINX Ingress Controller是通过Helm安装的,直接在values.yaml中添加TCP配置即可:
tcp: 11112: "default/xxx-py:11112"
然后执行helm upgrade命令更新Ingress Controller:
helm upgrade nginx-ingress ingress-nginx/ingress-nginx -n kube-system -f values.yaml
内容的提问来源于stack exchange,提问作者Apurv Mishra
相关产品推荐
相关产品推荐

