前几周又把家庭集群从 docker swarm 切到 k3s 了,我把系统全装上了最新的 debian ,然后遇到好几个坑。
容器会一直报 iptables 某个规则不支持,请使用 nftables...
但是能正常安装,使用也没问题,但是正常几天后,会突然出现集群网络不通的问题,不知道是不是也是 nftables 的问题
排查一路是发现 kilo 生成的 WireGuard ip 是一个旧的 ip ,一直没变
最后没找到解决方案,所以换成 tailscale 了,k3s 唯一给出的 vpn 方案。
tailscale subnet 按官方教程配置好了,结果只能 ping 通装了 tailscale 的那个节点的内网 ip ,ping 不通其它的,看 iptables 规则也是有的。
只能搜索引擎慢慢翻,试了几种都没用,最后 reddit 找到个说修改 firewall-mode 的,加上就解决了...
TS_DEBUG_FIREWALL_MODE=nftables
行吧,好歹是解决了。
装上这个之后,直接给我集群干崩了,无限重启。
翻官网 issues ,给得方案是不要使用 nftables https://github.com/projectcalico/calico/issues/8025
绷不住了,一路踩坑过来,是不是不能用 nftables 了,有人用上了吗
关键是 debian 最新的两个版本,默认使用 nftables
1
DefoliationM 141 天前 via Android
看起来你的机器上不只装了 k8s ,还装了其他东西,我建议在完全干净的系统里装 k8s ,不然不好排查,完全不知道问题出在哪。
|
2
LanLiang 141 天前
kubernetes 官方 (kube-proxy)对 nftables 的支持将会在 1.31 版本进入 beta 阶段,默认开启.
|
3
ericFork 140 天前
calico 对 nftables 的支持将在 v3.29 引入( tech-preview ),GA 可能还需要一些耐心
|
4
guigeng 134 天前
我是 k3s + tailscale 方案,kube-proxy 使用 ipvs
就是有个问题,我内网有其他 vm 做了 advertise-routes ,只能通过 tailnet 的 ip 访问 master 了 `TS_DEBUG_FIREWALL_MODE=nftables`这个我没设置 ```bash NAME STATUS ROLES AGE VERSION dogyun Ready <none> 19h v1.29.6+k3s2 dogyun-js Ready <none> 3h28m v1.29.6+k3s2 k3s-lab Ready control-plane,master 21h v1.29.6+k3s2 oracle-a1 Ready <none> 19h v1.29.6+k3s2 oracle-a2 Ready <none> 19h v1.29.6+k3s2 oracle-a3 Ready <none> 19h v1.29.6+k3s2 oracle-a4 Ready <none> 21h v1.29.6+k3s2 virmach Ready <none> 19h v1.29.6+k3s2 ``` 目前在任意一台 node 上 Ping pod 的 ip 地址都正常。 os 基本是用 debian12 ,ubuntu22.04 24.04 |
8
guigeng 134 天前
@juzisang 请问一下,你内网开 subnet 的节点是 k3s 的 node 吗?我是家里 k3s node 默认使用 tailscale 10.42.0.0/24
家里其他电脑无法 ping 内网地址,只能 ping tailscale ip 地址。路由器加了静态路由。 |
9
juzisang OP @guigeng #8 我是家里内网的 k3s node 节点开了 subnet ,然后用云服务器上的 tailscale 节点 ping 不通家里的内网,只能 ping 通装了 tailscale 的那个 k3s node 节点的内网 ip 。我也加了静态路由
|
10
guigeng 132 天前
@juzisang k3s 使用 tailscale 方案的时候,默认是--advertise-routes=10.42.0.0/24
还需要执行 tailscale set --advertise-routes=192.168.100.0/24,10.42.0.0/24 ,然后 console 把家里节点的 192.168.100.0/24 这个 subroute 加进去 这样的话家里的 k3s node 才能从云服务器 ping 通。 之前 tailscale status 各个节点都是 direct ,但是现在发现部分节点编程 via tailscale 的公网节点了。。。不知道啥问题 |
12
skrbug 132 天前
|