我正在尝试在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忽略端口,因为它不知道该端口 .
如果在这种情况下需要做一些额外的事情,请指导我 .
谢谢
1 回答
也许你需要在所有节点上使用此配置标志启动kube-proxy服务:
更多信息:http://kubernetes.io/v1.1/docs/admin/kube-proxy.html