可以处理从客户端到您的服务的 TCP 和 UDP 流量,但这稍微取决于您运行 Kubernetes 的位置。
解决方案
无处不在的解决方案
可以将 Ingress 用于 TCP 和 UDP 协议,而不仅仅是 HTTP。一些 Ingress 实现支持代理该类型的流量。
这是一个example 用于 Nginx Ingress 控制器TCP的那种配置:
apiVersion: v1
kind: ConfigMap
metadata:
name: tcp-configmap-example
data:
9000: "default/example-go:8080" here is a "$namespace/$service_name:$port"
和 UDP:
apiVersion: v1
kind: ConfigMap
metadata:
name: udp-configmap-example
data:
53: "kube-system/kube-dns:53" # here is a "$namespace/$service_name:$port"
因此,实际上,您可以运行需要普通 UDP 和 TCP 连接但有一些限制的应用程序(如果您有多个 pod 等,则需要以某种方式管理负载平衡)。
但是,如果您现在有一个应用程序现在可以在没有 Kubernetes 的情况下执行此操作 - 我认为迁移到 Kubernetes 后您不会有任何问题。
交通流的小例子
对于 SIP UDP 流量,例如,您可以像这样准备配置:
客户端 -> Nginx 入口 (UDP) -> OpenSIPS 负载均衡器 (UDP) -> Sip 服务器 (UDP)。
因此,客户端会将数据包发送到 Ingress,然后将其转发到 OpenSIPS,OpenSIPS 将管理 SIP 集群的状态并将客户端数据包发送到适当的 SIP 服务器。
仅适用于云的解决方案
另外,如果您要在云端运行,您可以使用 ServiceType LoadBalancer 作为您的 Service,并通过云平台提供的外部负载均衡器直接获取到您的应用程序的 TCP 和 UDP 流量。
关于SCTP
SCTP 怎么样,不幸的是,不,尚不支持,但您可以跟踪进度here。