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

单节点Microk8s环境Multus主接口eno8无法被Pod访问问题排查求助

根因分析

  • macvlan原生限制:macvlan bridge模式下,从母接口(你这里是eno8)创建的所有macvlan子接口(Pod的eth1),默认无法直接与母接口通信,这是内核层面的设计限制,因此Pod直接ping宿主机eno8的IP 10.128.1.244不通属于预期现象。
  • 路由配置不匹配:你Pod的默认路由指向Calico的eth0接口,访问公网、同网段网关的流量默认不会走Multus分配的eth1接口,导致访问网关10.128.1.1不通。
  • 二层网络限制:如果交换机端口开启了端口安全、MAC地址数量限制,会阻断macvlan子接口的通信,因为每个Pod的eth1都会生成独立的MAC地址,超出交换机端口的MAC数量限制后流量会被丢弃。

修复方案

1. 解决Pod与宿主机eno8通信问题

在宿主机上创建同模式的macvlan子接口,将eno8的IP迁移到该子接口上,配置对应路由:

# 创建macvlan子接口,模式和Multus配置一致为bridge
ip link add link eno8 name macvlan0 type macvlan mode bridge
# 迁移eno8的IP到macvlan0
ip addr del 10.128.1.244/24 dev eno8
ip addr add 10.128.1.244/24 dev macvlan0
ip link set macvlan0 up
# 添加路由,确保宿主机访问Pod的macvlan网段走子接口
ip route add 10.128.1.147/28 dev macvlan0

如需持久化配置,可将上述规则写入netplan配置文件或开机自启脚本中。

2. 解决Pod访问网关、外部网络问题

方式一:调整Pod路由优先级

在Pod的metadata中添加注解,指定Multus网卡的默认路由:

annotations:
  k8s.v1.cni.cncf.io/networks: '[
    {
      "name": "test-network",
      "default-route": ["10.128.1.1"]
    }
  ]'

方式二:开启ARP代理

如果需要外部网络直接访问Pod的macvlan IP,在宿主机开启eno8的ARP代理:

# 临时生效
sysctl -w net.ipv4.conf.eno8.proxy_arp=1
# 持久化生效,写入/etc/sysctl.conf后执行sysctl -p
net.ipv4.conf.eno8.proxy_arp = 1

3. 排查二层网络限制

联系网络管理员确认eno8接入的交换机端口,是否开启了端口安全、MAC地址过滤、IP-MAC绑定等限制,放开对应规则即可。

内容的提问来源于stack exchange,提问作者van

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:45:02