1、应用场景说明

在OpenStack上部署了四台虚拟机,这四台虚拟机作为K8S集群的node
部署K8S需要访问外部镜像仓库,所以虚拟机需要访问OpenStack集群外的网络
OpenStack Train Magnum部署Kubernetes(2)–使用OpenStack界面部署虚拟机这篇博文中,虚拟机可以访问OpenStack宿主机,但是无法透过宿主机访问外部网络
正常情况下,需要br-ex直接连到外部网络
但是,因为宿主机节点只有一个网口能连外部网络,且这个网口需要用来做远程访问,不能挂到br-ex桥上
所以需要在宿主机上配置路由转发规则

2、配置路由转发规则

2.1、开启ip转发

# echo "1">/proc/sys/net/ipv4/ip_forward

2.2、增加路由转发规则

# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens3f0 -j MASQUERADE

其中:192.168.100.0/24为OpenStack浮动ip CIDR

2.3、删除的reject规则

# iptables -nL --line-numbers
Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination
1    REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

带有reject-with icmp-host-prohibited信息的规则需要删除

# iptables -D FORWARD 1

其中:1为规则编号
注:如果还有其他这样的规则一并删除

经过这些配置后,虚拟机就可以访问外部网络了

3、问题

3.1、从宿主机ping不通虚拟机

可能原因是:虚拟机没有从neutron要到地址
解决:vnc登录虚拟机,执行dhclient

3.2、虚拟机ping不通外部网络

iptables规则已经按步骤2配置好,虚拟机还是ping不通外部网络
可能原因是:br-ex等网桥处于down状态
解决:

ip link set br-ex up
ip link set br-int up
ip link set ovs-system up
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐