1

我正在尝试在 Kubernetes 上使用 SIP 应用程序(opensips 存在服务器),但它没有按预期工作。

该应用程序在 UDP 端口 5060 上运行,客户端也使用相同的端口进行连接。

我创建了一个 NodePort 服务(因为 LoadBalancer 只支持 TCP),它公开了 NodePort 5060,容器端口也是 5060。

以下是规格:

"spec": {
    "ports": [
      {
        "port": 5061,
        "protocol": "UDP",
        "targetPort": 5060,
    "nodeport": 5060,
    "name": "sipu"
      }
    ],
    "selector": {
      "app": "opensips"
    },
    "type": "NodePort"
  }

和 Iptable 规则:

Chain KUBE-NODEPORT-CONTAINER (1 references)
 pkts bytes target     prot opt in     out     source               destination
   12  8622 REDIRECT   udp  --  *      *       0.0.0.0/0            0.0.0.0/0            /* default/opensips:sipu */ udp dpt:5060 redir ports 40482
    3    95 REDIRECT   udp  --  *      *       0.0.0.0/0            0.0.0.0/0            /* default/my-udp-service: */ udp dpt:6000 redir ports 47497


Chain KUBE-NODEPORT-HOST (1 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DNAT       udp  --  *      *       0.0.0.0/0            0.0.0.0/0            /* default/opensips:sipu */ udp dpt:5060 to:10.0.1.215:40482
    0     0 DNAT       udp  --  *      *       0.0.0.0/0            0.0.0.0/0            /* default/my-udp-service: */ udp dpt:6000 to:10.0.1.215:47497

应用程序接收到请求,但是当它尝试在端口 5060 上发送回复时出现问题,回复被发送回 pod,我猜是因为 iptable 规则。

我尝试使用不同的客户端端口,但在这种情况下,iptable 会忽略该端口,因为它不知道该端口。

如果在这种情况下需要做一些额外的事情,请指导我。

谢谢

4

1 回答 1

0

也许您需要在所有节点上使用此配置标志启动 kube-proxy 服务:

--udp-timeout=250ms (change the value according to your needs)

更多信息: http: //kubernetes.io/v1.1/docs/admin/kube-proxy.html

于 2016-02-20T18:41:04.450 回答