K3s中通过NodePort暴露UDP服务(TFTP)无法连接的问题求助
K3s中通过NodePort暴露UDP服务(TFTP)无法连接的问题求助
大家好,我最近在K3s环境里遇到了一个棘手的问题:通过NodePort暴露UDP类型的TFTP服务时,外部始终无法连接,但同样方式暴露的TCP服务却完全正常,想请各位帮忙排查一下问题所在。
环境与配置情况
我是在单节点NixOS上运行的K3s,防火墙已经完全关闭(configuration.nix里设置了networking.firewall.enable = false;),K3s的配置也很极简:
services.k3s.enable = true; services.k3s.role = "server"; services.k3s.extraFlags = toString [];
部署的端口配置
我的Deployment里已经声明了对应的端口:
... ports: - containerPort: 3000 - containerPort: 69 protocol: UDP
Service定义
对应的Service配置如下,明确指定了NodePort和UDP协议:
apiVersion: v1 kind: Service metadata: name: netboot-nodeports spec: selector: app: netboot type: NodePort ports: - name: tftp port: 69 targetPort: 69 nodePort: 32069 protocol: UDP - name: webui port: 3000 targetPort: 3000 nodePort: 32070
测试结果
- TCP服务(WebUI):不管是从K3s节点本身,还是同网络的其他机器,用
curl http://192.168.1.154:32070都能正常访问,完全没问题。 - UDP服务(TFTP):在容器内部可以正常连接——执行
kubectl exec -it netboot-64565b9c69-bmvs4n -- tftp localhost 69能成功交互;但从节点或者同网络的其他机器执行tftp 192.168.1.154 32069时,直接超时失败。
我检查了K3s的日志,没发现任何和这个问题相关的错误信息,实在找不到头绪了,有没有朋友遇到过类似的情况?
备注:内容来源于stack exchange,提问作者Mark Grimes
相关产品推荐
相关产品推荐

