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. weave的网络 登录后复制 # 其实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. 登录后复制 weave 还会虚拟出一些新的东西 ifconfig 1.2. 登录后复制 # 安装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. 启动容器 登录后复制 # 41 docker run -tid --name test1 centos:7 /bin/sh # 42 docker run -tid --name test2 centos:7 /bin/sh 1.2.3.4. 登录后复制 # 我们发现两个虚拟机上的容器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. 登录后复制 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. 问题来了-这个时候能通吗? 登录后复制 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. 加深weave理解 登录后复制 # 我们发现并不通,原因很简单。 一开始的图 1. 登录后复制 我们可以很明细的发现,为什么不通? weave 创建的虚拟网口都只是在虚拟机自身之上完成的,我们并没有能够把这些虚拟网口有效的进行连通 那么图中写的很明白了,我们要添加 weave网络的router路由来完成不通虚拟机之间的“串联” 41=== weave connect 192.168.0.42 42--- weave connect 192.168.0.41 1.2.3.4.5.6.7. 登录后复制 我们也可以在host文件中写weave赋予的Ip 只要给一个容器最高权限,是可以实现在容器中完成服务的部署的 1.2. 新机器如何加入weave网络? 登录后复制 假设我们有一台新的机器43 ,我们也想要43 加入到41-42的weave网络中去 43的环境已经配置完成 如何完成呢? weave attach 10.254.0.2/24 test3 可以吗? 1.2.3.4. 登录后复制 # 我们发现并不能通 43 --- weave connect 192.168.0.41 41 --- weave connect 192.168.0.43 1.2.3. 登录后复制 # 为什么?因为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. 登录后复制 那怎么能够让不通的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. 原创作者: u_16873273 转载于: https://blog.51cto.com/u_16873273/11500071