linux网络基础

同pod间的容器通讯

pod内容器共享同一网络名称空间,因此同一pod间的容器通过lo网卡直接通讯

同主机容器的网络通讯

在docker(默认docker0)和flannel(cni0) 中使用二层网桥进行通讯
1. 创建网络名称空间
ip netns add n1
ip netns add n2
2. 创建veth-peer
ip link add veth1 type veth peer name veth2
ip link add veth3 type veth peer name veth4
3.
ip link set veth1 name eth0 netns n1
ip link set veth3 name eth0 netns n2
4.
ip netns exec n1 ip address add 172.168.100.1/24 dev eth0
ip netns exec n2 ip address add 172.168.100.2/24 dev eth0
ip netns exec n1 ip link set up dev eth0
ip netns exec n2 ip link set up dev eth0
ip netns exec n1 ip link set up dev lo
ip netns exec n2 ip link set up dev lo
5. 创建网桥
ip link add br0 type bridge
ip address add 172.168.100.3/24 dev br0
ip link set veth2 master br0
ip link set veth4 master br0
ip link set veth2 up
ip link set veth4 up
ip link set br0 up
6. ping
ip netns exec n1 ping 172.168.100.2

不同主机间的网络通讯

多数cni插件都为了实现不同主机pod通讯。
1.host-gw
2.vxlan
3.ipip
4.bgp
5.ipvlan
6.macvlan
7.sr-iov

host-gw

主机 eth0 br0
host1 10.4.7.250/24 172.168.99.3
host2 10.4.7.252/24 172.168.100.3

host1上执行

#1. 创建网络名称空间
ip netns add n1
ip netns add n2
#2. 创建veth-peer
ip link add veth1 type veth peer name veth2
ip link add veth3 type veth peer name veth4
#3.
ip link set veth1 name eth0 netns n1
ip link set veth3 name eth0 netns n2
#4.
ip netns exec n1 ip address add 172.168.99.1/24 dev eth0
ip netns exec n2 ip address add 172.168.99.2/24 dev eth0
ip netns exec n1 ip link set up dev eth0
ip netns exec n2 ip link set up dev eth0
ip netns exec n1 ip link set up dev lo
ip netns exec n2 ip link set up dev lo
#5. 创建网桥
ip link add br0 type bridge
ip address add 172.168.99.3/24 dev br0
ip link set veth2 master br0
ip link set veth4 master br0
ip link set veth2 up
ip link set veth4 up
ip link set br0 up
#6. ping
ip netns exec n1 ping 172.168.99.2
ip netns exec n1 ip route add 172.168.100.0/24 via 172.168.99.3
ip netns exec n2 ip route add 172.168.100.0/24 via 172.168.99.3
ip route add 172.168.100.0/24 via 10.4.7.252 dev eth0
ip netns exec n1 ping 172.168.100.1
ip netns exec n1 ping 172.168.100.2
ip netns exec n1 ping 172.168.100.3

主机2上执行

1. 创建网络名称空间
ip netns add n1
ip netns add n2
2. 创建veth-peer
ip link add veth1 type veth peer name veth2
ip link add veth3 type veth peer name veth4
3.
ip link set veth1 name eth0 netns n1
ip link set veth3 name eth0 netns n2
4.
ip netns exec n1 ip address add 172.168.100.1/24 dev eth0
ip netns exec n2 ip address add 172.168.100.2/24 dev eth0
ip netns exec n1 ip link set up dev eth0
ip netns exec n2 ip link set up dev eth0
ip netns exec n1 ip link set up dev lo
ip netns exec n2 ip link set up dev lo
5. 创建网桥
ip link add br0 type bridge
ip address add 172.168.100.3/24 dev br0
ip link set veth2 master br0
ip link set veth4 master br0
ip link set veth2 up
ip link set veth4 up
ip link set br0 up
6. ping
ip netns exec n1 ping 172.168.100.2
ip netns exec n1 ip route add 172.168.99.0/24 via 172.168.100.3
ip netns exec n2 ip route add 172.168.99.0/24 via 172.168.100.3
ip route add 172.168.99.0/24 via 10.4.7.250
posted @ 2023-04-26 15:10  mingtian是吧  阅读(61)  评论(0编辑  收藏  举报