Docerk overlay 网络需要一个 key-value 数据库用于保存网络状态信息,包括 Network、Endpoint、IP 等。Consul、Etcd 和 ZooKeeper 都是 Docker 支持的 key-vlaue 软件,我们这里使用 Consul。
一、准备实验环境:
搭建实验环境:
| 主机名 | 系统 | 内核版本 | IP | 
|---|---|---|---|
| master | CentOS7 | kernel-5.2.11 | 10.1.1.17 | 
| node1 | CentOS7 | kernel-5.2.11 | 10.1.1.13 | 
| node2 | CentOS7 | kernel-5.2.11 | 10.1.1.14 | 
如果内核版本低于kernel-3.18,实验很大可能会失败,所以建议升级Linux的系统内核,具体步骤如下:
 导入key
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
 
如果你修改了repo的gpgcheck=0也可以不导入key
安装elrepo的yum源
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
 
安装内核
 在yum的ELRepo源中,有mainline(3.18.3)这个内核版本
yum --enablerepo=elrepo-kernel install  kernel-ml-devel kernel-ml -y
 
选择了使用新安装的repo来安装内核,如果使用其他的repo,看不到3.18版本内核
更新后查看内核版本
[root@ip-10-10-17-4 tmp]# uname -r
3.10.0-123.el7.x86_64
 
重要:目前内核还是默认的版本,如果在这一步完成后你就直接reboot了,重启后使用的内核版本还是默认的3.10,不会使用新的内核,想修改启动的顺序,需要进行下一步
 查看默认启动顺序:
awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
CentOS Linux (3.18.3-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux, with Linux 3.10.0-123.el7.x86_64
CentOS Linux, with Linux 0-rescue-893b160e363b4ec7834719a7f06e67cf
 
默认启动的顺序是从0开始,但我们新内核是从头插入(目前位置在0,而3.10的是在1),所以需要选择0,如果想生效最新的内核,需要执行:
 grub2-set-default 0
然后reboot重启,使用新的内核,下面是重启后使用的内核版本
[root@ip-10-10-17-4 tmp]# uname -r
Kernel 5.22
 
二、配置consul环境
首先在docker部署支持的组件,比如Consul,最简单的方法是以容器的方式运行Consul:
[root@localhost ~]#
[root@localhost ~]# docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap
 
Consul容器启动完成后,可以通过10.1.1.17:8500访问Consul:
修改完后,需要重启。
接下来修改docker daemon的配置文件,CentOS7环境下docker的daemon文件在/usr/lib/systemd/system/docker.service:
 先修改master的配置文件,添加以下内容:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --cluster-store=consul://192.168.1.4:8500 --cluster-advertise=ens33:2376
 
修改node1文件,添加以下内容:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --cluster-store=consul://192.168.1.4:8500 --cluster-advertise=ens33:2376
 
修改node2文件,添加以下内容:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --cluster-store=consul://192.168.1.4:8500 --cluster-advertise=ens33:2376
 
然后master、node1和node2,均执行以下命令:
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
 
上面重启docker服务的时候,master上面的consul容器也会被停掉,所以这里要记得把master节点上的容器consul拉起来:
docker start consul
 
打开http://10.1.1.17:8500/ui/#/dc1/kv/docker/nodes/,可以看到node1和node2节点已经注册到consul上:
 
三、创建overlay网络:
创建网络:
[root@localhost ~]# docker network create --driver overlay overlay_net1
406055e7a5b56511a6b7e021fef688a69d262fa3112094d43b4bdbea2eceda09
[root@localhost ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
afe6548e7c82        bridge              bridge              local
2ca6a9334230        host                host                local
467bdef50c36        none                null                local
406055e7a5b5        overlay_net1        overlay             global
 
在node1上查看存在的网络:
[root@localhost ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
2ff0c772489f        bridge              bridge              local
5a657b6beb24        host                host                local
e69a4839e6c6        none                null                local
406055e7a5b5        overlay_net1        overlay             global
 
在node2上查看存在的网络:
[root@localhost ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
1b6bc781
                
                  
                  
                  
                  
本文详细介绍了如何在Docker环境中搭建Overlay网络,包括实验环境的准备、Consul配置、网络创建与容器通信等内容,深入解析了跨主机通信原理及网络隔离配置。
          
最低0.47元/天 解锁文章
                          
                      
      
          
                
                
                
                
              
                
                
                
                
                
              
                
                
                    
              
            
                  
					963
					
被折叠的  条评论
		 为什么被折叠?
		 
		 
		
    
  
    
  
					
					
					


            