0

我在 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 container getting lostProblems on running a SIP application (UDP) on Kubernetes 相关

有谁知道这里可能出了什么问题或修复?

4

1 回答 1

0

如果您kubectl get svc应该看到它打开了 UDPTCP 端口。Kubernetes 在同一端口上同时支持 UDP 和 TCP 似乎是一个持续存在的问题

如果您更改了端口号,您会收到错误消息“无法使用混合协议创建外部负载均衡器”(请参阅​​相关问题)。

您可以做的是创建两个具有相同静态 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
于 2016-08-17T10:27:11.273 回答