k8s 网络学习一

65 阅读2分钟

network namespace: linux内核一项重要功能,用于隔离不同的网络设置

网桥network bridge:linux内核提供的一种链路层设备。Docker利用网桥来实现容器和外界通信
默认情况下,docker服务会在它所在机器上创建一个名为docker0的网桥。

brctl show 列出当前系统的所有network bridge

ifconfig docker0 查看docker0的详细信息

docker network ls 查看docker默认提供的几种网络

bridge: 如果docker启动时,没有显示加入任何网络,那么会默认加入到名为bridge的网络,这个网络就是基于docker0实现的
host:加入host网络的容器,可以实现和docker daemon守护进程也就是docker服务所在的宿主机网络环境进行直接通信
none:容器在启动时不带任何网络设备

docker network inspect bridge

Subnet   --这个子段表明bridge网络位于的网段,与ifconfig中docker0的IP地址一致
Containers --- 这个字段表明启动的加入brideg网络的容器

brctl show

docker0的interfaces 字段 表示一对虚拟以太网设备veth pair,一端位于容器里,另外一端位于宿主机上
ip addr show vethexxxxxx

创建网桥:

brctl addbr lab-br0         --创建网桥
	brctl show  查看网桥
ifconfig lab-br0 10.15.10.1 netmask 255.255.255.0 指定IP地址
	ifconfig lab-br0 查看详细信息
ip netns add lab-ns0   ---创建一个network namespace,模拟一个容器
	ip netns list  查看network namespace
ip link add veth0 type veth peer name veth1     --在宿主机上新建两个网络端口veth1@veth0, veth0@veth1
	ip link list 查看以太网接口
	ip netns exec lab-ns0 ip link list   查看lab-ns0里的ip link
ip link set veth1 netns lab-ns0   把veth1移到lab-ns0里
	ip netns exec lab-ns0 ip link list
	ip link list
ip netns exec lab-ns0 ip link set veth1 name eth0    把位于lab-ns0里的veth1重新命名为eth0
	ip netns exec lab-ns0 ip link list
ip netns exec lab-ns0 ip addr add 10.15.10.2/24 dev eth0   为lab-ns0里的eht0设置ip地址
	ip netns exec lab-ns0 ip addr show eth0   ---查看eth0 验证ip地址是否设置成功
brctl addif lab-br0 veth0         --连接veth0 到lab-br0网桥,实现lab-ns0 和宿主机的网络联通
	brctl show   查看网桥连接的interfaces
ip netns exec lab-ns0 ip route list     在lab-ns0里执行ip route list 查看静态路由规则
ip route list 

ip link set dev veth0 up 启动宿主机的veth0
ip netns exec lab-ns0 ip link set dev eth0 up  启动lab-ns0中的eth0
ip netns exec lab-ns0 ip link set dev lo up  启动lab-ns0里的loopback
	ping 10.15.10.2 -c 3  ping lab-ns0 里的eth0
	ip netns exec lab-ns0 ping 10.15.10.1 -c 3  从lab-ns0 ping 宿主机的lab-br0
	ip netns exec lab-ns0 ping 10.15.10.2 -c 3  从lab-ns0 ping eth0