V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
juzisang
V2EX  ›  Kubernetes

k8s 的生态是不是对 nftables 兼容性很不好?

  •  
  •   juzisang · 172 天前 · 1582 次点击
    这是一个创建于 172 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前几周又把家庭集群从 docker swarm 切到 k3s 了,我把系统全装上了最新的 debian ,然后遇到好几个坑。

    一、 kilo 会一直报规则不支持

    容器会一直报 iptables 某个规则不支持,请使用 nftables...

    但是能正常安装,使用也没问题,但是正常几天后,会突然出现集群网络不通的问题,不知道是不是也是 nftables 的问题

    排查一路是发现 kilo 生成的 WireGuard ip 是一个旧的 ip ,一直没变

    最后没找到解决方案,所以换成 tailscale 了,k3s 唯一给出的 vpn 方案。

    二、tailscale subnet 无效

    tailscale subnet 按官方教程配置好了,结果只能 ping 通装了 tailscale 的那个节点的内网 ip ,ping 不通其它的,看 iptables 规则也是有的。

    只能搜索引擎慢慢翻,试了几种都没用,最后 reddit 找到个说修改 firewall-mode 的,加上就解决了...

    TS_DEBUG_FIREWALL_MODE=nftables
    

    行吧,好歹是解决了。

    三、 安装 Calico 替换 flannel ,来解决获取不到用户真实 ip 的问题

    装上这个之后,直接给我集群干崩了,无限重启。

    翻官网 issues ,给得方案是不要使用 nftables https://github.com/projectcalico/calico/issues/8025

    绷不住了,一路踩坑过来,是不是不能用 nftables 了,有人用上了吗

    关键是 debian 最新的两个版本,默认使用 nftables

    14 条回复    2024-07-18 20:06:50 +08:00
    DefoliationM
        1
    DefoliationM  
       172 天前 via Android
    看起来你的机器上不只装了 k8s ,还装了其他东西,我建议在完全干净的系统里装 k8s ,不然不好排查,完全不知道问题出在哪。
    LanLiang
        2
    LanLiang  
       171 天前
    kubernetes 官方 (kube-proxy)对 nftables 的支持将会在 1.31 版本进入 beta 阶段,默认开启.
    ericFork
        3
    ericFork  
       171 天前
    calico 对 nftables 的支持将在 v3.29 引入( tech-preview ),GA 可能还需要一些耐心
    guigeng
        4
    guigeng  
       165 天前
    我是 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
    juzisang
        5
    juzisang  
    OP
       165 天前
    @guigeng #4 ping pod 是没问题,我说的是,共享家庭局域网设备到集群网络那个 SubNet ,ping 不通家里其它的设备 ip
    guigeng
        6
    guigeng  
       165 天前
    @juzisang ping 家里其他网络设备是另外的 linux vm 开 subnet
    juzisang
        7
    juzisang  
    OP
       165 天前
    @guigeng #6 开了,都是对的,加上我说的那个配置,TS_DEBUG_FIREWALL_MODE=nftables 什么都不变,就正常了。
    guigeng
        8
    guigeng  
       165 天前
    @juzisang 请问一下,你内网开 subnet 的节点是 k3s 的 node 吗?我是家里 k3s node 默认使用 tailscale 10.42.0.0/24
    家里其他电脑无法 ping 内网地址,只能 ping tailscale ip 地址。路由器加了静态路由。
    juzisang
        9
    juzisang  
    OP
       164 天前
    @guigeng #8 我是家里内网的 k3s node 节点开了 subnet ,然后用云服务器上的 tailscale 节点 ping 不通家里的内网,只能 ping 通装了 tailscale 的那个 k3s node 节点的内网 ip 。我也加了静态路由
    guigeng
        10
    guigeng  
       163 天前
    @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 的公网节点了。。。不知道啥问题
    juzisang
        11
    juzisang  
    OP
       163 天前
    @guigeng #10 我最近也老这样,自建 derper 后就稳定多了...
    skrbug
        12
    skrbug  
       163 天前
    OP ,在 k8s 里面部署 tailscale 是为了解决什么需求呢?

    外部设备通过 VPN 可以直连 POD 的 IP ?

    有没有相关教程,学习下
    @juzisang
    guigeng
        13
    guigeng  
       163 天前
    @juzisang 我自建也这样,里面跑 daemonset,发现服务都不通了。
    guigeng
        14
    guigeng  
       163 天前
    @juzisang 部署的 ds 是使用 hostNetwork
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2856 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 13:26 · PVG 21:26 · LAX 05:26 · JFK 08:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.