我正在将 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 的协议hostPort
TCP,然后使用 Windows 中的相同 netcat 命令连接到它,它可以工作!它也适用于 TCPNodePort
服务。
TL;DR:
- 我可以从集群外部与运行的 pod 进行通信TCP通过容器公开的侦听器容器
hostPort
- 但是,我无法从集群外部与运行UDP通过容器公开的侦听器容器
hostPort
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)