You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

K8s混合集群Windows节点多网卡场景下强制Flannel使用指定网卡的问题求助

K8s混合集群Windows节点多网卡场景下强制Flannel使用指定网卡的问题求助

我来帮你分析下这个问题,你遇到的是多网卡场景下Windows节点上Flannel自动选了错误网卡的典型问题,咱们一步步来排查解决:

问题核心原因

Windows节点上的Flannel默认会绑定系统默认路由对应的网卡(也就是你那根带互联网的10.65.11.0/24网卡),而不是你用于集群通信的192.168.100.0/24网卡,这就导致跨节点Pod无法互通。修改网卡名称后出现的JSON解析错误,大概率是因为你指定的网卡名称不准确,导致WINS CLI无法获取到有效网络信息,返回空内容引发解析失败。

具体解决步骤

1. 确认Windows节点上的目标网卡信息

先登录Windows节点(SRV2),打开PowerShell执行以下命令,找到192.168.100.x对应的网卡准确名称:

Get-NetAdapter

你会看到类似这样的输出,重点关注Name列和IPAddress列的对应关系,比如目标网卡名称可能是Ethernet 2或者ClusterNIC这类:

Name                      InterfaceDescription                    ifIndex Status       MacAddress             LinkSpeed
----                      --------------------                    ------- ------       ----------             ---------
Ethernet                  Intel(R) Ethernet Connection I219-LM          12 Up           AA-BB-CC-DD-EE-FF        1 Gbps
ClusterNIC                Intel(R) Ethernet Adapter X710 for 10G...      15 Up           GG-HH-II-JJ-KK-LL       10 Gbps

一定要记下这个准确的网卡名称,如果名称带空格,后面配置时要加引号。

2. 修改Flannel配置,强制指定网卡

你之前只修改了YAML里的一处网卡名称,但这不够,需要在Flannel的启动参数或者ConfigMap里明确指定网卡:

  • 方法一:修改Windows节点的Flannel DaemonSet
    编辑DaemonSet配置:

    kubectl edit daemonset kube-flannel-ds-windows-amd64 -n kube-system
    

    找到containers下的args字段,添加--iface=你的目标网卡名称(比如--iface=ClusterNIC),如果网卡名称带空格,就写成--iface="Ethernet 2"。

  • 方法二:修改Flannel全局ConfigMap
    编辑kube-flannel的ConfigMap:

    kubectl edit configmap kube-flannel-cfg -n kube-system
    

    在net-conf.json里添加"Interface": "你的目标网卡名称",修改后的内容大概是:

    {
      "Network": "10.244.0.0/16",
      "Backend": {
        "Type": "vxlan",
        "Interface": "ClusterNIC"
      }
    }
    

    这种方式更推荐,因为配置是全局生效的。

3. 重启Flannel Pod并验证

删除原来的故障Flannel Pod,让DaemonSet重新创建一个新Pod:

kubectl delete pod -n kube-system kube-flannel-ds-windows-amd64-qt895

然后查看新Pod的日志,确认没有JSON解析错误:

kubectl logs -n kube-system <新创建的Pod名称>

最后测试跨节点Pod通信:比如在Linux控制平面启动一个busybox Pod,ping Windows节点上的Pod IP,或者反过来,验证网络是否正常。

额外注意事项

  • 如果用网卡名称还是有问题,可以尝试直接指定网卡的IP地址,比如--iface=192.168.100.1,这样能避免名称识别错误的问题。
  • 确保Windows节点上的192.168.100.0/24网卡没有被防火墙或者其他网络策略限制,能和Linux控制平面的192.168.100.11正常通信。
  • 确认你使用的Flannel版本和K8s v1.23.2兼容,sig-windows-tools里的配置文件通常适配对应K8s版本,但如果有兼容性问题,也可能引发异常。

备注:内容来源于stack exchange,提问作者misha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 14:54:52