【发布时间】:2016-04-30 12:56:56
【问题描述】:
我在 kubernetes 中遇到端口转发 UDP 流量的问题。我正在运行 coreos 裸机设置,过去只使用舰队来运行我的容器,因此这些容器可以正常工作,并且我的网络和端口转发设置正确。我可以手动运行容器并将端口转发给它,并且事情按预期工作,所以 kubernetes 和 UDP 似乎正在发生一些事情。我有多个无法正常工作的服务,但最简单的一个是这个 Mumble 服务器。这是从复制控制器开始的设置。
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 相关。
有谁知道这里可能出了什么问题或解决方法?
【问题讨论】:
-
tcpdump 显示什么?首先要确认的是流量是否返回机器。
-
另外,确切的 kubernetes 版本是什么?另外,这是用户空间代理(默认)还是 iptables 代理(需要启用)?
-
我正在运行 CoreOS beta (899.5.0),它有 kubelet 版本 Kubernetes v1.1.2+3085895。我正在拉 hyperkube:v1.1.2 来运行代理。我已按照 CoreOS 设置说明进行操作,并假设我使用代理容器运行代理,但我确实看到了 iptables 转发规则。 stackoverflow.com/questions/34368093/… 有一个 tcpdump,但我也会尝试获取一个。
-
@TimHockin 抱歉,我花了这么长时间才回复您。我一直在挖掘 tcpdump 并进行调查,发现 mumble 的问题似乎在于它是否恰好落在我的主人身上。我也有我的主设置来运行作业,但我认为这不是一个坏主意,就是我做错了。如果在 kubernetes 中启动,我仍然无法让 homeworld 游戏服务器正常工作,但我看到流量在节点和容器内部进出。我对那里的问题感到困惑,但似乎不是数据包没有发出来。
标签: docker kubernetes coreos flannel