zoukankan      html  css  js  c++  java
  • docker使用flannel网络

    基础环境我们使用了两台centos 7系统

    基础配置为:

    两台机器IP为

    172.17.3.10

    172.17.3.62

    hosts文件配置为

    172.17.3.10 node1

    172.17.3.62 node2

    两台均配置为这样

    开启内核ipv4转发功能

    echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

    sysctl -p

    清除iptables底层默认规则,并开启允许转发功能

    iptables -P INPUT ACCEPT

    iptables -P FORWARD ACCEPT

    iptables -F

    iptables -L -n

    最后关闭selinux,更改机器主机名,等等,完毕后重启下机器,至此我们前期准备工作已完毕。

    需要安装的组件为:

    1,etcd

    2,flannel

    3,docker

    安装步骤:

    安装etcd,我们采用了yum方式安装

    yum install -y epel-release

    yum make cache fast

    yum  install etcd -y

    至此我们的etcd安装完成。

    安装flannel

    yum install flannel -y

    最后我们再安装docker

    yum install -y yum-utils.noarch  ###安装yum的扩张工具集

    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo ####添加docker-ce的扩展源

    yum install -y --setopt=obsoletes=0 docker-ce-17.03.3.ce-1.el7 ####安装docker-ce

    最后docker-ce安装完成,我们一定要注意安装顺序,先安装etcd和flannel最后安装docker.

    下面我们来配置这3个组件

    首先配置etcd集群

    更改两台机器的上的etcd配置文件

    vim /etc/etcd/etcd.conf

    ETCD_DATA_DIR="/var/lib/etcd/default.etcd" ####数据存放位置
    ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380" ####监听其他etcd实列地址
    ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001" ####监听客户端地址
    ETCD_NAME="node1" ####节点名称
    ETCD_INITIAL_ADVERTISE_PEER_URLS="http://node1:2380"  ####通知其他成员的etcd地址
    ETCD_ADVERTISE_CLIENT_URLS="http://node1:2379,http://node1:4001"  ### #通知客户端地址
    ETCD_INITIAL_CLUSTER="node1=http://node1:2380,node2=http://node2:2380" ###初始化集群内节点地址
    ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"  ##初始化集群的token
    ETCD_INITIAL_CLUSTER_STATE="new"  ##初始化集群状态,new表示新建

    以上是etcd集群的配置上面是node1的配置,node2配置和node1一样,只是需要把node1改为node2

    ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
    ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
    ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"
    ETCD_NAME="node2"
    ETCD_INITIAL_ADVERTISE_PEER_URLS="http://node2:2380"
    ETCD_ADVERTISE_CLIENT_URLS="http://node2:2379,http://node2:4001"
    ETCD_INITIAL_CLUSTER="node1=http://node1:2380,node2=http://node2:2380"
    ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
    ETCD_INITIAL_CLUSTER_STATE="new"

    最后我们启动etcd,并查看其集群状态

    systemctl start etcd

    设置为开机启动

    systemctl enable etcd

    查看启动状态

    systemctl status etcd

    需要注意的是,必须两台机器的etcd实列都起来集群才能正常建立,这点务必要注意

    查看下etcd集群的状态

    etcdctl member list

    我们的etcd集群目前可以使用了,暂时到这里

    接下来我们配置flannel

    两台配置一致

    编辑flannel的配置文件,内容如下

    vim /etc/sysconfig/flanneld

    # Flanneld configuration options  
    
    # etcd url location.  Point this to the server where etcd runs
    FLANNEL_ETCD_ENDPOINTS="http://172.17.3.10:2379,http://172.17.3.62:2379"  #####etcd集群的地址,包括各个成员
    
    # etcd config key.  This is the configuration key that flannel queries
    # For address range assignment
    FLANNEL_ETCD_PREFIX="/atomic.io/network"  ####自定义的子网目录,一定要和添加到etcd的子网目录一致
    
    # Any additional options that you want to pass
    #FLANNEL_OPTIONS=""
    FLANNEL_OPTIONS="--logtostderr=false --log_dir=/var/log/ --etcd-endpoints=http://172.17.3.10:2379,http://172.17.3.62:2379 --iface=ens32"  ####定义了日志级别,路径,以及etcd集群地址和绑定的屋里网卡信息

    再启动flannel之前需要向etcd内写入子网信息

    etcdctl  mk /atomic.io/network/config '{"Network":"10.10.0.0/16", "SubnetMin": "10.10.1.0", "SubnetMax": "10.10.254.0"}'

    上面的2处红色字体部分必须一致,可以自定义但是必须一致

    子网范围为 10.10.0.0/16,最小子网开始为10.10.1.0 最大子网结束为10.10.254.0,至此自定义子网信息我们已经写入完毕。

    接下来,我们来启动flannel,并设置为开机启动

    systemctl start flanneld

    systemctl enable flanneld

    systemctl status flanneld

    两台都启动后我们来配置docker

    可以发现的是在我们先安装flannel和etcd后最后安装docker后我们使用 sysetmctl show docker 将会发现 在安装flannel后自动生成配置

    DropInPaths=/usr/lib/systemd/system/docker.service.d/flannel.conf

    故在docker的systemd文件中应用对应变量 DOCKER_NETWORK_OPTIONS 即可

    vim /usr/lib/systemd/system/docker.service

    ExecStart=/usr/bin/dockerd 
              $DOCKER_NETWORK_OPTIONS

    添加上述红色部分即可,引用了flannel的网络

    重载配置systemctl daemon-reload

    启动docker

    systemctl start docker

    然后我们来看两台物理机的网卡IP信息

    首先看node1的

    可以看到docker 0 的网桥已经使用flannel的网络段了

    node2也是如此

    目前两台物理机的docker 0 网络处于同一子网下面的都是使用的flannel的子网,是可以相互ping通的

    在node1上,ping node2的docker 0 网桥ip

    在node2上,ping node1的docker 0网桥ip

    是可以相互ping通的,那么两台物理机上容器也是可以互通的,我们分别在两台物理机上创建容器来测试下

    在node1创建一个容器,名字叫test,进入容器内部并查看ip

    我们来在容器内部ping下node2的docker 0网桥 IP

    是可以ping通的,没问题

    我们去node2上来ping node1上的容器的ip

    也是可以的

    我们node2上创建一个容器

    在容器内部去ping node1的docker 0 网桥IP

    是没有问题的

    来ping下node1上的容器的ip

    也是可以的,没有问题

    至此,docker使用flannel网络并实现互联互通完成。

    需要注意的几点要点:

    1,向etcd集群写入子网信息时候务必要注意建立的子网文件夹要和flannel的配置文件内一直。

    2,flannel的配置,etcd集群地址写正确,子网文件夹信息要和etcd写入一致

    3,系统iptables默认规则一定要清除,并开启允许转发

    4,确定下docker的网络是否被flannel接管,我们查看下docker的进程要确认下

    如果有类似如上信息就表示被接管成功。

  • 相关阅读:
    PAT 甲级 1132 Cut Integer (20 分)
    AcWing 7.混合背包问题
    AcWing 9. 分组背包问题
    AcWing 5. 多重背包问题 II
    AcWing 3. 完全背包问题
    AcWing 4. 多重背包问题
    AcWing 2. 01背包问题
    AcWing 875. 快速幂
    AcWing 874. 筛法求欧拉函数
    AcWing 873. 欧拉函数
  • 原文地址:https://www.cnblogs.com/hh2737/p/10168579.html
Copyright © 2011-2022 走看看