《Kubernetes 权威指南 (第四版)》第七章,p415 开始。
$ sudo ip netns add xujiyou # 创建一个名为xujiyou的网络命名空间
在命名空间中执行ip a
命令:
$ sudo ip netns exec xujiyou ip a
也可以先通过 bash
命令进入内部的 shell 界面,然后再执行各种命令:
$ sudo ip netns exec xujiyou bash
如果退出,输入exit
手贱,执行了以下命令:
$ sudo ip link set eth0 netns xujiyou
把 eth0 设备移动到了xujiyou的网络命名空间下,之后就是ssh进不去了,重启不管用,去云平台重建了下实例变好了。。。
查看网络设备是否可迁移:
$ sudo ethtool -k eth0
netns-local: off [fixed]
netns-local 为 off 说明可以迁移。
创建 Veth 设备对:
$ sudo ip link add veth0 type veth peer name veth1
创建后,查看 Veth 设备对信息:
$ sudo ip link show
6: veth1@veth0: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 3a:6d:f7:17:59:67 brd ff:ff:ff:ff:ff:ff
7: veth0@veth1: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether fa:41:12:e0:72:34 brd ff:ff:ff:ff:ff:ff
把 Veth 设备的一端甩到另一个网络命名空间:
$ sudo ip link set veth1 netns xujiyou
这时再用 ip link show
就只能看到 veth0 了。查看另一端的设备:
$ sudo ip netns exec xujiyou ip link show
然后给他们分别分配 ip 地址:
$ sudo ip addr add 10.1.1.1/24 dev veth0
$ sudo ip netns exec xujiyou ip addr add 10.1.1.2/24 dev veth1
然后启动他们:
$ sudo ip link set dev veth0 up
$ sudo ip netns exec xujiyou ip link set dev veth1 up
现在两端就可以通信了!:
$ ping 10.1.1.2
$ sudo ip netns exec xujiyou ping 10.1.1.1
完美!!!
[admin@fueltank-1 ~]$ sudo ip netns exec xujiyou ethtool -S veth1
NIC statistics:
peer_ifindex: 7
然后各个命名空间查找设备号为 7 的设备:
$ sudo ip link | grep 7
查看路由表:
$ sudo ip show table local type local
$ sudo ip route list
$ netstat -rn