Day11-Weave 网络

初始化操作-基础就不细写

安装docker
# 系统信息; centos7.9  需要换华为源
docker 二进制安装  20.10.10
weave 安装  wget -O /usr/local/bin/weave https://raw.githubusercontent.com/zettio/weave/master/weave
关闭防火墙-下载依赖包

机器情况: 41.42
测试 : 43

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

Day11-Weave 网络_weave

weave的网络

Day11-Weave 网络_weave_02

# 其实weave 相较于calico 、 flannel 来说,它很简单
它创建了两个固定的容器,用于桥接 
物理容器会内嵌一个网口,通过weave route 来通讯
  • 1.
  • 2.
  • 3.
weave 用的最多的两个命令
connetc  attch
  • 1.
  • 2.
wget -O /usr/local/bin/weave https://raw.githubusercontent.com/zettio/weave/master/weave
##  下载镜像  注意给x执行权限
chmod +x /usr/local/bin/weave

#下载镜像
weave launch


yum -y install  bridge-utils
brctl show
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.

Day11-Weave 网络_weave_03
Day11-Weave 网络_docker_04Day11-Weave 网络_docker_05

weave 还会虚拟出一些新的东西
ifconfig
  • 1.
  • 2.

Day11-Weave 网络_weave_06

# 安装weave之后 它会生成这几个网口
通过这几个网口进行通讯
  • 1.
  • 2.

测试

# 机器41 42
docker pull centos:7
# 打开中继路由、防火墙
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F
iptables -L -n
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

Day11-Weave 网络_centos_07

启动容器

# 41
docker run -tid --name test1 centos:7 /bin/sh
# 42
docker run -tid --name test2 centos:7 /bin/sh
  • 1.
  • 2.
  • 3.
  • 4.

Day11-Weave 网络_docker_08

# 我们发现两个虚拟机上的容器Ip 均为172.17.0.2
因为两个容器虚拟网卡docker0都是默认按序分配的

进入容器中进行更换源

docker exec -it   name /bin/bash
cd /etc/yum.repos.d/
mkdir bak
mv CentOS-* bak/
exit

docker cp CentOS7-Base.repo test1:/etc/yum.repos.d/
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.

Day11-Weave 网络_github_09Day11-Weave 网络_docker_10

yum -y install net-tools

exit


# 41 42 分别给test1 test2 附加Ip
41----
weave attach 10.244.0.2/24 test1
42=====
weave attach 10.244.0.4/24 test2

可以进容器看看 ifconfig  就可以看到有weave的虚拟网口
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.

Day11-Weave 网络_github_11
Day11-Weave 网络_centos_12

问题来了-这个时候能通吗?

41 -test1 10.244.0.2
42 -test2 10.244.0.4
好像他们是一个网段的啊? 能通吗?
我们试试

docker exec -it test1 /bin/bash
ping 10.244.0.4
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

Day11-Weave 网络_centos_13

加深weave理解
# 我们发现并不通,原因很简单。 一开始的图
  • 1.

Day11-Weave 网络_centos_14

我们可以很明细的发现,为什么不通?
weave 创建的虚拟网口都只是在虚拟机自身之上完成的,我们并没有能够把这些虚拟网口有效的进行连通

那么图中写的很明白了,我们要添加 weave网络的router路由来完成不通虚拟机之间的“串联”

41===  weave connect 192.168.0.42
42---  weave connect 192.168.0.41
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

Day11-Weave 网络_github_15

我们也可以在host文件中写weave赋予的Ip
只要给一个容器最高权限,是可以实现在容器中完成服务的部署的
  • 1.
  • 2.

新机器如何加入weave网络?

假设我们有一台新的机器43 ,我们也想要43 加入到41-42的weave网络中去
43的环境已经配置完成
如何完成呢?
weave attach 10.254.0.2/24 test3 可以吗?
  • 1.
  • 2.
  • 3.
  • 4.

Day11-Weave 网络_github_16

# 我们发现并不能通
43 --- weave connect 192.168.0.41
41 --- weave connect 192.168.0.43
  • 1.
  • 2.
  • 3.

Day11-Weave 网络_docker_17

# 为什么?因为weave赋予的Ip地址和虚拟网口,只有同一网段才能通信
10.244.0.0/24这个网段和192.168.0.0/24 是无法通信的,这和本身的网络要求是一致的
也能有效提升安全性,保证隔离

那么 如果我使用命令
weave attach 10.254.0.6/24 test1  会覆盖原有的weave ip 吗?
答案是不会
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

Day11-Weave 网络_weave_18

那怎么能够让不通的41-test1和43-test3实现通信呢?
--> 让41和43 属于同一网段
接着-> 释放原有weave ip 
---> 重新attach weave ip
-> 停掉那个test1 重启一个test5即可
所以,最好还是同一网段,不要用多了,weave 网桥网段写一个就可以了。

weave expose 可以给weave网卡赋予一个Ip,通过这个Ip,容器就可以访问宿主机

weave expose 10.244.0.0/24 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.

Day11-Weave 网络_centos_19