我遇到了kubernetes端口转发UDP流量的问题。我正在运行coreos baremetal设置,并且过去只使用了fleet来运行我的容器,因此这些容器正常工作,我的网络和端口转发正确设置。我可以手动运行容器和端口前进到它,事情按预期工作,所以似乎kubernetes和UDP正在发生一些事情。我有多个服务无法正常工作,但最容易的是这个笨蛋服务器。以下是从复制控制器开始的设置。
apiVersion: v1
kind: ReplicationController
metadata:
name: mumble-v0
labels:
app: mumble
version: v0
spec:
replicas: 1
selector:
app: mumble
version: v0
template:
metadata:
labels:
app: mumble
version: v0
spec:
containers:
- name: mumble
image: coppit/mumble-server
imagePullPolicy: Always
resources:
limits:
cpu: 0.5
memory: 500Mi
ports:
- containerPort: 64738
name: mumble
- containerPort: 64738
name: mudp
protocol: UDP
服务本身:
apiVersion: v1
kind: Service
metadata:
name: mumble
labels:
app: mumble
kubernetes.io/name: "mumble"
spec:
selector:
app: mumble
ports:
- name: mumble
port: 64738
- name: mumble-udp
port: 64738
protocol: UDP
externalIPs: ["10.0.1.19"]
客户端可以连接到服务并查看服务器,但没有正确的语音流量。此语音流量通过UDP发送和接收。环顾四周,我看到有关UDP问题的其他报告似乎与Responses from kubernetes containers getting lost和Problems on running a SIP application (UDP) on Kubernetes有关。
有谁知道这里可能出现什么问题或修复?
答案 0 :(得分:0)
如果您kubectl get svc
,您应该看到它打开了UDP 或 TCP端口。在同一端口上支持UDP和TCP的Kubernetes似乎是ongoing issue。
如果您更改了端口号,则会收到错误“无法使用混合协议创建外部负载均衡器”(请参阅related issue)。
您可以做的是使用相同的静态IP创建两个服务(应该保留):
apiVersion: v1
kind: Service
metadata:
name: mumble-tcp
labels:
project: mumble
spec:
type: LoadBalancer
loadBalancerIP: 10.10.10.10
ports:
- port: 64738
selector:
name: mumble
project: mumble
---
apiVersion: v1
kind: Service
metadata:
name: mumble-udp
labels:
project: mumble
spec:
type: LoadBalancer
loadBalancerIP: 10.10.10.10
ports:
- port: 64738
protocol: UDP
selector:
name: mumble
project: mumble