• Docker(六):Docker网络配置进阶


    1、Docker集群网络配置之Weave

      Weave是Github上一个比较热门的Docker容器网络方案,具有非常良好的易用性且功能强大。仓库地址:https://github.com/weaveworks/weave.git。

      Weave由两大主要组件组成:

        Weave:用户态shell脚本,用于安装Weave,将container连接到Weave虚拟网络,并为他们分配IP。

        Weaver:运行于container内,每个Weave网络内的主机都要运行,它是一个Go语言实现的虚拟网络路由器,不同主机之间的网络通信都依赖于Weaver路由。

      Weave简单使用:

        Host1

          启动Weave:weave launch

          启动容器:weave run 10.2.1.1/24 -t -i ubuntu bash

        Host2

          启动Weave并连接Host1:weave launch $Host1-IP

          启动容器:weave run 10.2.1.2/24 -t -i ubuntu bash

        测试两个容器之间可以通信。

      Weave其他命令:

        weave launch [-password] [-nickname]:启动时设置节点之间互通的密码

        weave connect $OTHER_HOST_IP:连接其他weave host主机

        weave attach IP $ID:将已经运行的容器动态添加到网络,detach命令为剥离

        weave ps:查看containers列表

        weave status:查看weave状态

      Weave缺点:

        不支持服务发现,主机不能动态加入节点网络,只能手动通过weave launch或connect加入weave网络

        不支持动态分配IP

    2、Docker集群网络配置之Flannel

      安装:从https://github.com/coreos/flannel/releaseshttps://github.com/coreos/etcd/releases分别下载Flannel和Etcd的最新版本二进制包。
      解压后将Flannel的二进制文件“flanneld”和脚本文件“mk-docker-opts.sh”、以及Etcd的二进制文件“etcd”和“etcdctl”放到系统的PATH目录下即可。

      创建集群:

        Host1:IP 172.16.10.189

          etcd -name infra0 -initial-advertise-peer-urls http://172.16.10.189:2380 -listen-peer-urls  http://172.16.10.189:2380 -initial-cluster-token etcd-cluster-1 -initial-cluster infra0=http://172.16.10.189:2380,infra1=http://172.16.10.88:2380 -initial-cluster-state new

        Host2:IP 172.16.10.88

          etcd -name infra1 -initial-advertise-peer-urls http://172.16.10.88:2380 -listen-peer-urls  http://172.16.10.88:2380 -initial-cluster-token etcd-cluster-1 -initial-cluster infra0=http://172.16.10.189:2380,infra1=http://172.16.10.88:2380 -initial-cluster-state new

      查看集群成员列表(任一主机都可):  

        [root@kvm ~]# etcdctl member list
        5b2b3a252a3f1a96: name=infra1 peerURLs=http://172.16.10.88:2380 clientURLs=http://localhost:2379 isLeader=false
        70b69a104d137154: name=infra0 peerURLs=http://172.16.10.189:2380 clientURLs=http://localhost:2379 isLeader=true

      写入Flannel网络配置

        etcdctl mkdir /coreos.com/network/

        etcdctl set /coreos.com/network/config '{"Network":"10.1.0.0/16","SubnetLen":24,"SubnetMin":"10.1.0.0","SubnetMax":"10.1.128.0"}'

      每台主机都运行flanneld

      每台主机重新配置docker

        sudo mk-docker-opts.sh -i
        source /run/flannel/subnet.env
        sudo rm /var/run/docker.pid
        sudo ifconfig docker0 ${FLANNEL_SUBNET} 
      重启docker进程,之后在启动容器,此时主机1和2的容器互通

    3、Docker集群网络配置之SocketPlane
      仓库地址:https://github.com/socketplane/socketplane
      SocketPlane的安装配置比较简单,只需要运行源码目录下的scripts/install.sh就可安装。
      会下载SocketPlane和Powerstrip两个镜像,以容器的方式运行SocketPlane主程序。
      查看SocketPlane运行是否正常
      docker ps  #显示socketplane正在运行
      socketplane agent logs  #日志无异常,满足这两个条件即运行正常
      创建socketplane网络:socketplane network create frontend 192.168.0.1/24
      创建一个名为frontend,IP段为192.168.0.1/24的子网。
      查看当前集群内包含几个子网:socketplane network list,结果以集合的方式的显示
      利用socketplane启动容器:socketplane run -n frontend -tid ubuntu:latest bash
      进去容器查看网络:docket exec -ti $ID ip addr show
      可看到容器自动从frontend子网获取了一个IP,socketplane底层使用consul同步数据,保证IP不冲突
      查看socketplane信息:socketplane info











  • 相关阅读:
    jni java与c++交互返回三维数组jobjectArray
    Android开发之EditText 详解(addTextChangedListener监听用户输入状态)
    Android JNI和NDK学习(09)--JNI实例二 传递类对象
    JavaDoc的生成规则---ShinePans
    Android 电话自己主动接听和挂断具体解释
    传统线程技术(一)
    Linux内核启动及根文件系统载入过程
    eclipse、MyEclipse实现批量改动文件编码
    菜鸟开发—应具备的搜索技巧
    Java之GUI编程(一)
  • 原文地址:https://www.cnblogs.com/dukuan/p/7570678.html
Copyright © 2020-2023  润新知