VirtualBox虚拟机上Kubernetes集群Pod无法Ping通宿主机如何解决
解决Kubernetes Pod无法Ping通VirtualBox宿主机的配置方案
检查VirtualBox虚拟机网络模式
- 确保Worker节点虚拟机使用桥接模式:该模式下虚拟机会直接接入宿主机所在局域网,和宿主机处于同一网段,Pod网络可直接路由到宿主机。
- 若使用NAT模式,需额外配置VirtualBox的NAT规则,允许K8s Pod子网访问宿主机IP。
添加Worker节点路由规则
在Worker节点上手动添加指向宿主机的路由,确保Pod流量能正确转发:
# 先通过ip route show查看虚拟机网关和网卡名,比如网关为10.5.48.1,网卡为enp0s3 ip route add 10.5.48.152/32 via 10.5.48.1 dev enp0s3
若需永久生效,可将规则写入对应系统的网络配置文件:
- CentOS/RHEL:写入
/etc/sysconfig/network-scripts/route-enp0s3 - Ubuntu:写入
/etc/netplan/下的配置文件并执行netplan apply
调整宿主机防火墙规则
- Windows宿主机:打开「Windows Defender防火墙高级设置」→「入站规则」,新建规则允许ICMPv4回显请求,来源设置为K8s Pod子网(可通过
kubectl get nodes -o wide查看节点的PodCIDR)。 - Linux宿主机:执行命令开放Pod子网的ICMP请求:
sudo iptables -A INPUT -s <Pod子网,如10.244.0.0/16> -p icmp --icmp-type echo-request -j ACCEPT # 若使用firewalld sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="<Pod子网>" protocol value="icmp" accept' --permanent sudo firewall-cmd --reload
检查CNI插件配置
- 确认Flannel/Calico等CNI插件未限制Pod访问外部网络:
- Flannel:检查
kube-flannel.yml,默认配置允许外部访问,无需额外修改。 - Calico:查看是否存在阻止Pod访问宿主机的NetworkPolicy,若有则删除或调整规则。
- Flannel:检查
验证Pod网络路由
在busybox Pod中执行以下命令,确认默认路由指向Worker节点网卡:
kubectl exec --stdin --tty busybox -- ip route show
若路由缺失或指向错误,需重新部署CNI插件以生成正确的Pod路由规则。
内容的提问来源于stack exchange,提问作者Debraj Bhowmik
相关产品推荐
相关产品推荐

