Pod UDP 主机端口在 Docker Desktop 中不起作用

2024-01-10

我正在将 Docker Desktop for Windows 与 WSL2 结合使用,并尝试将以下部署部署到我的 Docker Desktop 的 Kubernetes 集群:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: udp-listener
  labels:
    app: udp-listener
spec:
  replicas: 1
  selector:
    matchLabels:
      app: udp-listener
  template:
    metadata:
      labels:
        app: udp-listener
    spec:
      containers:
      - name: udp-listener
        image: mendhak/udp-listener
        ports:
        - containerPort: 5005
          hostPort: 5005
          protocol: UDP

它是一个简单的容器,在端口 5005 上公开 UDP 侦听器。该容器记录它收到的每条 UDP 消息。它还在主机的端口 5005 上将该端口公开到集群外部。

我遇到的问题是,当我尝试使用 Windows 连接到 UDP 端口时nc localhost 5005, 这是行不通的。但是,如果我尝试使用NodePort使用命令进行服务kubectl expose deployment udp-listener --port=5005 --name=udp-listener-svc --protocol=UDP --type=NodePort然后运行nc localhost EXPOSED_PORT,它工作得很好,我在容器的日志中看到了我发送的每一条 UDP 消息。

更奇怪的是,这似乎不是 TCP 端口的问题:如果我尝试部署 TCP 侦听器 pod(而不是 UDP 侦听器 pod),请更改 pod 的协议hostPortTCP,然后使用 Windows 中的相同 netcat 命令连接到它,它可以工作!它也适用于 TCPNodePort服务。

TL;DR:

  • 我可以从集群外部与运行的 pod 进行通信TCP通过容器公开的侦听器容器hostPort
  • 但是,我无法从集群外部与运行UDP通过容器公开的侦听器容器hostPort

None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pod UDP 主机端口在 Docker Desktop 中不起作用 的相关文章

随机推荐