K3s-network-issue

K3s-network-issue

Posted by laohuang on Sunday, September 28, 2025

部署 K3s 集群在极为严格的内网内,机器仅可以访问外网,外网对内访问需映射内网端口,内网机器之间采用白名单制度,需申请开通的端口。

2台机器, 安装 Ubuntu22.04

192.168.1.10 --- K3s master
192.168.1.11 --- K3s agent

外网访问内网端口:

443是给运营的服务提供的访问端口,6443 是给访问集群提供的端口

外网IP:18086 -----> 192.168.1.10:443
外网IP:18586 -----> 192.168.1.10:6443

内网端口互联:

这一点比较麻烦,之前从没遇到过内网之间也要配置防火墙的情况,参考的文档,让网管开通了如下端口在2台机器上,配置为互通。

TCP: 80,443,6443,10250,10254,36222,51820,2379-2380,8443,9099,9100, 
TCP/UDP: 30000-32767

网管配置好了,安装 K3s 的 master 和 agent 节点,起初一切正常,但后来发现 agent 上的 pod 不能连接集群中的服务,返回错误是不能解析 DNS , 试着 nc 端口,确实不能连接。

仔细看文档,原来是忘记开 8472 /UDP 端口,这个端口负责集群内部所有的网络转发,

Protocol Port Source Destination Description
UDP 8472 All nodes All nodes Required only for Flannel VXLAN

打开端口后,网络恢复正常。

起初简单用 nc 命令不能准确测试 UDP 的连通性,貌似所有的 UDP 端口测试下来返回结果都是通的,但这其实肯定是不可能的。

nc -uvz 191.168.1.10 8472
Connection to 191.168.1.10 8472 port [udp/*] succeeded!
nc -uvz 191.168.1.10 8888
Connection to 191.168.1.10 8888 port [udp/*] succeeded!

后来采用 tcpdump 的方式测试,才能正确测试 UDP 的连通性。

在 master 上 运行

sudo tcpdump -i any 'udp and src host 192.168.0.11 and dst port 8472'

在 agent 上测试

nc -uvz 192.168.1.10 8472

然后在master查看,要有如下输出才算是真正的连通

09:43:52.045892 eth0  In  IP 192.168.1.11.42327 > csknode1.8472: OTV, [length 1 < 8] (invalid)
09:43:53.045984 eth0  In  IP 192.168.1.11.42327 > csknode1.8472: OTV, [length 1 < 8] (invalid)
09:43:53.847407 eth0  In  IP 192.168.1.11.51680 > csknode1.8472: OTV, flags [I] (0x08), overlay 0, instance 1

K3s 集群之间网络端口可参考如下官方文档:

https://docs.k3s.io/installation/requirements#inbound-rules-for-k3s-nodes

https://ranchermanager.docs.rancher.com/zh/getting-started/installation-and-upgrade/installation-requirements/port-requirements

「真诚赞赏,手留余香」

LaoHuang Blog

真诚赞赏,手留余香

使用微信扫描二维码完成支付