【发布时间】:2020-02-09 00:24:13
【问题描述】:
我在公共云(Azure/AWS/Google Cloud)中运行 Kubernetes 集群,并且我想向用户公开一些非 HTTP 服务。
对于 HTTP 服务,我通常会使用 Ingress 资源通过可寻址的 DNS 条目公开该服务。
对于非 HTTP、基于 TCP 的服务(例如,PostgreSQL 等数据库),我应该如何公开这些服务以供公众使用?
我考虑使用NodePort 服务,但这要求节点本身可以公开访问(依靠kube-proxy 路由到适当的节点)。如果可能的话,我宁愿避免这种情况。
LoadBalancer 服务似乎是另一种选择,尽管我不想为我想要公开的每个 TCP 服务创建一个专用的云负载均衡器。
我知道NGINX Ingress controller supports exposing TCP and UDP services,但这似乎需要对您要公开的服务进行静态定义。对于我的用例,这些服务是动态创建和销毁的,因此无法在静态 ConfigMap 中预先定义这些服务映射。
【问题讨论】:
标签: networking kubernetes tcp cloud