我的dockerized服务(webrtc服务器)同时使用TCP和UDP传输协议。我正在使用Azure Kubernetes服务。如您所知,我们无法同时使用TCP和UDP协议在Kubernetes中创建LoadBalancer服务(更多信息here)
此外,我尝试创建两个服务:
将它们与一个公共IP绑定,但显示:“确保负载平衡器”消息。
唯一的解决方案是使用NodePort,但在Azure中它对我不起作用(连接超时)。
这是我的服务Yaml:
apiVersion: v1
kind: Service
metadata:
name: mcu
spec:
selector:
app: mcu
ports:
- name: mcu
nodePort: 30000
port: 8080
protocol: TCP
- name: webrtc
nodePort: 30003
port: 10000
protocol: UDP
type: NodePort
externalIPs:
- <ext IP>
答案 0 :(得分:1)
对混合TCP / UDP协议的支持取决于云提供商。例如,Azure支持它,但是截至本文撰写时,AKS可能没有支持它的版本。
不清楚是什么为您提供了connection timeout
,但是只要您将Azure UDP负载平衡器指向30003
NodePort,它就可以正常工作。您还可以在将UDP流量发送到服务ClusterIP:10000
您还可以检查您的服务是否具有端点:
$ kubectl describe svc <service-name>
或/和:
$ kubectl get ep
答案 1 :(得分:0)
似乎AKS doesnt support NodePort和AKS服务类型LoadBalancer无法在同一服务上同时使用TCP和UDP协议