Проблемы при запуске приложения SIP (UDP) в Kubernetes
Я пытаюсь работать с приложением SIP (сервером присутствия opensips) на Kubernetes, но оно не работает, как ожидалось.
Приложение работает на 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"
}
И приемлемые правила:
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 игнорирует порт, потому что не знает об этом порте.
Пожалуйста, помогите мне, если что-то еще нужно сделать в этом случае.
Спасибо
1 ответ
Возможно вам нужно запустить сервис kube-proxy с этим флагом конфигурации на всех узлах:
--udp-timeout=250ms (change the value according to your needs)
больше информации: http://kubernetes.io/v1.1/docs/admin/kube-proxy.html