之前一篇说了如何连接两个network namespace ,那如何连接3个呢?或者5个?
现实生活中,一根网线只能连接2台电脑,如果你有6台电脑,想相互之间通讯,那么就需要用到交换机:
我们需要把每个POD都插到交换机上,大家就可以内部通信了,首先,我们需要创建交换机
1 |
$ ip link add v-net-0 type bridge |
创建完成默认是关闭状态,我们要启用它
1 2 3 4 |
$ ip link 8: v-net-0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/ether fa:fd:d4:9b:33:66 brd ff:ff:ff:ff:ff:ff $ ip link set dev v-net-0 up |
然后和上一篇文章相同,我们创建两个network namespace
1 2 3 |
$ ip netns add red $ ip netns add blue |
然后创建两根网线:
1 2 3 |
$ ip link add veth-red type veth peer name veth-red-br $ ip link add veth-blue type veth peer name veth-blue-br |
然后把网线分别插入交换机和pod 的network namespace
1 2 3 4 5 6 7 |
$ ip link set veth-red netns red $ ip link set veth-blue netns blue $ ip link set veth-red-br master v-net-0 $ ip link set veth-blue-br master v-net-0 |
然后给Pod 分配IP
1 2 3 |
$ ip -n red addr add 192.168.15.1/24 dev veth-red $ ip -n blue addr add 192.168.15.2/24 dev veth-blue |
然后启动网络接口
1 2 3 |
$ ip -n red link set veth-red up $ ip -n blue link set veth-blue up |
然后给我们的交换机一个IP
1 |
ip addr add 192.168.15.5/24 dev v-net-0 |
然后启动交换机的端口
1 2 |
$ ip link set dev veth-red-br up $ ip link set dev veth-blue-br up |
这个时候网络就通的了,就可以从主机ping我们的Pod了
但是注意,这只实现了我们本机上的所有的pod之间的通信,并不能链接其他机器
Latest posts by Zhiming Zhang (see all)
- aws eks node 自动化扩展工具 Karpenter - 8月 10, 2022
- ReplicationController and ReplicaSet in Kubernetes - 12月 20, 2021
- public key fingerprint - 5月 27, 2021