有没有办法处理Kubernetes的SIP、RTP、DIAMETER和M3UA流量?

有没有办法处理Kubernetes的SIP、RTP、DIAMETER和M3UA流量?,kubernetes,Kubernetes,通过快速阅读Kubernetes文档,我注意到kube代理的行为类似于4级代理,并且可能对TCP/IP流量(s.a.通常是HTTP流量)工作良好 但是,还有其他协议,如SIP(可以通过TCP或UDP)、RTP(通过UDP)和核心电信网络信令协议,如DIAMETER(通过TCP或SCTP)或类似的M3UA(通过SCTP)。在Kubernetes仆从运行的应用程序中,有没有办法处理这种流量 在我的阅读中,我遇到了Kuberntes的入口API的概念,但我知道这是扩展代理功能的一种方式。对吗 此外,目

通过快速阅读Kubernetes文档,我注意到kube代理的行为类似于4级代理,并且可能对TCP/IP流量(s.a.通常是HTTP流量)工作良好

但是,还有其他协议,如SIP(可以通过TCP或UDP)、RTP(通过UDP)和核心电信网络信令协议,如DIAMETER(通过TCP或SCTP)或类似的M3UA(通过SCTP)。在Kubernetes仆从运行的应用程序中,有没有办法处理这种流量

在我的阅读中,我遇到了Kuberntes的入口API的概念,但我知道这是扩展代理功能的一种方式。对吗

此外,目前还没有已知的入口API实现(开源或开源),可以允许Kubernetes集群处理上述类型的流量

最后,除了使用入口API之外,是否没有办法处理上面列出的流量,即使它有性能限制

此外,目前还没有已知的入口API实现(开源或开源),可以允许Kubernetes集群处理上述类型的流量

可能吧,还有这个

(这里有,)

库伯内特斯部署 在Kubernetes术语中,单个语音网关实例等同于单个pod,其中包含SIP Orchestrator容器和媒体中继容器。
语音网关吊舱安装在Kubernetes群集中,该群集由外部SIP负载平衡器前置。
通过Kubernetes,可以安排语音网关pod在虚拟机集群上运行。该框架还监控pod,并可配置为在检测到故障时自动重启语音网关pod

注意:由于Kubernetes中的SIP负载平衡器目前不支持自动扩展和自动发现新POD,因此外部SIP

为了说明Kubernetes的局限性:

由于语音网关使用的协议,在Kubernetes环境中运行IBM语音网关需要在部署典型的基于HTTP的应用程序之外进行特殊考虑

语音网关依赖SIP协议进行呼叫信令,依赖RTP协议进行媒体传输,两者都需要与特定的语音网关实例关联。为了避免破坏会话亲缘关系,这些协议必须绕过Kubernetes入口路由器

要解决入口路由器的限制,必须在主机网络模式下配置语音网关容器。
在主机网络模式下,当在任一语音网关容器中打开端口时,这些相同的端口也会打开并映射到基本虚拟机或节点上。
此配置还消除了在kubectl配置文件中定义媒体端口范围的需要,Kubernetes目前不支持该配置文件。在主机网络模式下,每个节点仅部署一个pod可确保SIP和媒体端口在主机VM上打开,并对SIP负载平衡器可见


Kubernetes的网络配置如中所示,其中描述了pod/节点通信中涉及的要素:


可以处理从客户端到您的服务的TCP和UDP通信,但这稍微取决于运行Kubernetes的位置

解决 一个在任何地方都有效的解决方案 TCP和UDP协议都可以使用入口,而不仅仅是HTTP。一些入口实现支持代理该类型的流量

以下是针对TCP的Nginx入口控制器的此类配置的示例:


版本:v1
种类:配置地图
元数据:
名称:tcp配置映射示例
数据:
9000:“default/example go:8080”这里是一个“$namespace/$service\u name:$port”

和UDP:

版本:v1
种类:配置地图
元数据:
名称:udp配置映射示例
数据:
53:“kube系统/kube dns:53”#这里有一个“$namespace/$service_name:$port”

因此,实际上,您可以运行需要普通UDP和TCP连接的应用程序,但有一些限制(如果您有多个pod等,则需要以某种方式管理负载平衡)

但是,如果您现在有一个应用程序可以在没有Kubernetes的情况下做到这一点,我认为在迁移到Kubernetes之后,您不会遇到任何问题

交通流的一个小例子

例如,对于SIP UDP通信,您可以准备如下配置:

客户端->Nginx入口(UDP)->OpenSIPS负载平衡器(UDP)->Sip服务器(UDP)

因此,客户端将向入口发送数据包,并将其转发到OpenSIPS,OpenSIPS将管理SIP集群的状态,并将客户端数据包发送到适当的SIP服务器

仅适用于云的解决方案 此外,如果您将在云上运行,您可以为您的应用程序使用
ServiceType
,并通过云平台提供的外部负载平衡器直接向您的应用程序获取TCP和UDP流量

关于SCTP
关于SCTP,不幸的是,不支持,但您可以跟踪进度

关于k8s中的SCTP支持:它最近作为alpha功能被合并到k8s中。SCTP在服务、网络策略和Pod定义中作为一种新的协议类型受到支持。请参见此处的PR:

存在一些限制:

  • 多宿SCTP关联的处理不在PR的范围内。在使用NAT的情况下支持多宿SCTP关联是一个更广泛的主题,这也影响到当前处理协议NAT的SCTP内核模块。请参见此处的示例: 从k8s的角度来看,还需要一个CNI插件来支持