在 Kuberetes 應用中,一般是通過 Ingress 暴露 HTTP/HTTPS 的服務,但實際使用中可能需要暴露 TCP 服務。Ingress 默認包含了 Nginx,Nginx 本身支持 TCP 做反向代理,所以也 可以通過 Ingress 暴露 TCP 服務。
假設我們需要將服務 test-tcp 的 8081 端口暴露為 18081 端口:
一、修改配置項:tcp-services
切換到 kube-system 命名空間,選中 tcp-services 配置項,添加配置:
18081 default/test-tcp:8081
其中配置項的格式為:
<Nginx port>: <namespace/service name>:<service port>:[PROXY]:[PROXY]
二、修改服務:nginx-ingress-lb
切換到 kube-system 命名空間,選中 nginx-ingress-lb 服務,添加端口映射:
服務端口:18081 # 需要暴露的端口
容器端口:18081 # 第一步配置的端口,也可以配置成其他端口,只要與第一步保持一致即可
參考: