回答问题

通过快速阅读 Kubernetes 文档,我注意到 kube-proxy 的行为类似于 4 级代理,并且可能适用于 TCP/IP 流量(通常是 HTTP 流量)。

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

在我的阅读中,我遇到了 Kubernetes 的 Ingress API 的概念,但我理解它是一种扩展代理功能的方法。那是对的吗 ?

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

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

Answers

另外,目前确实没有已知的 Ingress API 实现(开源或闭源),可以允许 Kubernetes 集群处理上述类型的流量?

大概和这个IBM 研究 IBM Voice Gateway “设置高可用性”

https://www.ibm.com/support/knowledgecenter/SS4U29/images/ha.png

(这里使用SIP(会话发起协议),像 OpenSIPS)

Kubernetes 部署

在 Kubernetes 术语中,单个语音网关实例等同于单个 pod,其中包含 SIP Orchestrator 容器和 Media Relay 容器。

语音网关 pod 安装到 Kubernetes 集群中,该集群前面有一个外部 SIP 负载均衡器。

通过 Kubernetes,可以安排语音网关 pod 在虚拟机集群上运行。该框架还监视 Pod,并且可以配置为在检测到故障时自动重启语音网关 Pod。

注意:因为当前不支持 Kubernetes 中的 SIP 负载均衡器自动扩展和自动发现新 Pod,所以使用外部 SIP

并且,为了说明 Kubernetes 的局限性:

由于语音网关使用的协议,在 Kubernetes 环境中运行 IBM Voice Gateway 需要除部署典型的基于 HTTP 的应用程序之外的特殊注意事项。

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

要解决入口路由器的限制,必须在主机网络模式下配置语音网关容器。

在主机网络模式下,当在任一语音网关容器中打开端口时,这些相同的端口也会打开并映射到基本虚拟机或节点上。

此配置还省去了在 kubectl 配置文件中定义媒体端口范围的需要,目前 Kubernetes 不支持。在主机网络模式下每个节点仅部署一个 Pod 可确保 SIP 和媒体端口在主机 VM 上打开并且对 SIP 负载均衡器可见。


为 Kubernetes 部署的网络配置在这个答案中得到了最好的说明,它描述了 pod/node-communication 中涉及的元素:

https://devpress-image.s3.cn-north-1.jdcloud-oss.com/a/291c80e2c0_APpSf.jpg

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐