kubernetes - 使用 UDP 和 TCP 的 AKS(kubernetes)服务
问题描述
我的 dockerized 服务(webrtc 服务器)同时使用 TCP 和 UDP 传输协议。我正在使用 Azure Kubernetes 服务。如您所知,我们无法在 Kubernetes 中使用 TCP 和 UDP proto 创建 LoadBalancer 服务(更多信息在这里)
另外,我尝试创建两个服务:
- 一个用于 TCP 端口
- 一个用于 UDP
将它们与一个公共 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>
解决方案
对混合 TCP/UDP 协议的支持取决于云提供商。例如,Azure支持它,但 AKS 在撰写本文时可能没有支持它的版本。
不清楚是什么给了你,connection timeout
但只要你将 Azure UDP 负载均衡器指向30003
NodePort,它应该可以正常工作。您还可以在向服务发送 UDP 流量的集群节点中进行本地测试ClusterIP:10000
您还可以检查您的服务是否有端点:
$ kubectl describe svc <service-name>
或/和:
$ kubectl get ep
推荐阅读
- spring-batch - 有没有办法知道使用 MultiResourceItemWriter 生成的文件名?
- java - 如何在后台一小时后执行一些代码?
- javascript - 如何在图像数组中获取特定的按钮 ID
- timer - Flutter - 如何在 Text() 中显示一个运行 60 秒的计时器
- python - 如何在 python 的查询中运行多个 SQL 语句?
- android-automotive - 什么是 Android 汽车操作系统?
- pandas - 如果第一行包含缺失数据,如何分配列标题
- vue.js - 如何在模板操作后更新 vue-tables-2 中的数据?
- vega - 在 vegalite 中重新渲染?
- apache-kafka - 如何使用 JSON 值设置 Kafka Rest Proxy Key Schema?