Kubernetes で SIP アプリケーション (opensips プレゼンス サーバー) を操作しようとしていますが、期待どおりに動作しません。
アプリケーションは UDP ポート 5060 で実行され、クライアントも同じポートを使用して接続します。
NodePort 5060 を公開し、コンテナー ポートも 5060 である NodePort サービスを作成しました (LoadBalancer は TCP のみをサポートするため)。
以下は仕様です。
"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 で応答を送信しようとすると問題が発生します。応答はポッドに送り返されます。iptable ルールが原因だと思います。
別のクライアント ポートで試してみましたが、その場合、iptable はそのポートを認識していないため、そのポートを無視します。
この場合、何か特別なことをする必要がある場合は、私を案内してください。
ありがとう