我有许 Multi-Tenancy 在一个 Kubernetes 集群(在 AWS 上)上运行,其中每个租户都有一个 Pod,该 Pod 公开一个 TCP 端口(不是 HTTP)和一个 >UDP端口。
- 我不需要负载平衡功能。
- 该方法应公开一个可供外部使用的 IP 地址,并为每个租户提供专用端口
- 我不想将节点直接暴露到互联网
到目前为止我有以下服务:
apiVersion: v1
kind: Service
metadata:
name: my-service
labels:
app: my-app
spec:
type: NodePort
ports:
- port: 8111
targetPort: 8111
protocol: UDP
name: my-udp
- port: 8222
targetPort: 8222
protocol: TCP
name: my-tcp
selector:
app: my-app
该走哪条路?
最佳答案
- Deploy AWS 集群上的 NGINX 入口 Controller
- 将您的服务我的服务类型从
NodePort
更改为至ClusterIP
- 编辑 configMap
tcp-services
在ingress-nginx
命名空间添加:
data: "8222": your-namespace/my-service:8222
- 与 configMap 相同
udp-services
:
data: "8111": your-namespace/my-service:8111
现在,您可以使用 nginx-controller IP <ip:8222>
从外部访问您的应用程序(TCP) 和 <ip:8111>
(UDP)
关于kubernetes - Kubernetes 中如何让服务 TCP/UDP 端口可被外部访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50690269/