zoukankan      html  css  js  c++  java
  • 容器中跨主机的网络方案-Calico

    容器中的网络是建立docker集群的重要内容。

    本文将介绍如何用Calico实现容器的多节点互通。

    Calico的组件结构如下:

    Calico通过etcd同步Bridge的信息,各个Docker node间通过BGP进行路由的交互。Iptables实现NAT、访问控制等。

    具体的安装过程如下,其中两个节点的IP地址分别是10.1.1.4和10.1.1.5,在10.1.1.4上安装etcd:

    一 安装docker

    yum install docker -y
    vim /etc/docker/daemon.json
    {
    "registry-mirrors": ["registry.docker-cn.com"],
    "cluster-store": "etcd://10.1.1.4:2379"
    }
    systemctl enable docker
    systemctl start docker

    二 安装etcd

    yum install etcd -y

    修改etcd的配置文件:

    cat /etc/etcd/etcd.conf | grep -v ^#
    
    ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
    ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
    ETCD_NAME="master"
    ETCD_ADVERTISE_CLIENT_URLS="http://10.1.1.4:2379"

    启动etcd:

    systemctl enable etcd
    systemctl start etcd

    三 安装Calico

    1 下载Calico

    wget -O /usr/local/bin/calicoctl https://github.com/projectcalico/calicoctl/releases/download/v1.6.1/calicoctl
    chmod +x /usr/local/bin/calicoctl

    2启动Calico

    Calico启动时,会调取calico的配置文件,编辑etcd的信息:

    vim /etc/calico/calicoctl.cfg
    
    apiVersion: v1
    kind: calicoApiConfig
    metadata:
    spec:
      datastoreType: "etcdv2"
      etcdEndpoints: http://10.0.1.4:2379

    3先下载calico node的docker image

    docker pull quay.io/calico/node:v2.6.0

    4 启动calico

    calicoctl node run --node-image quay.io/calico/node:v2.6.0

    5 检查calico的状态

    calicoctl node status

    6 创建docker的calico网络

    docker network create --driver calico --ipam-driver calico-ipam net1

    四 基于Calico网络创建容器

    在node1上创建container:

    docker run -d --net net2 --name c1 nginx

    同样在node2上也创建contianer:

    docker run -d --net net2 --name c2 nginx

    两边可以互通。

    查看两个node上的路由:

    可以看到Calico是个扁平的网络,通过bgp宣告路由,容器网络的网段路由指向node的IP地址。

    容器内部地址和路由:

    五 Azure支持Calico的配置

    由于公有云都采用SDN的网络架构,和数据中心的数据转发模型不同。在Azure需要做特别的配置,才能支持Calico的扁平网络的转发模式。

    1 用户自定义路由

    在node所在的网络配置用户自定义路由:

    Node1的容器网络路由指向node1的IP地址

    Node2的容器网络路由指向node2的IP地址

    关联到subnet上:

    2 每个node开启IP Forward

    开启这两个功能后,Calico网络就可以通了。

    总结:

    Calico网络是通过BGP进行容器网络路由交互的一种Docker网络的实现方式。其实现方式相对比较简单,性能损耗更小。

  • 相关阅读:
    redhat,centos Linux常用命令LS之常用功能
    人生信用卡
    如何让Redhat Linux启动时进入字符终端模式(不进入XWindow)
    OpenJDK和JDK区别
    Linux rpm 命令参数使用详解[介绍和应用]
    linux 的vim命令详解
    centos6.4安装javajdk1.8
    samba服务器 实现Linux与windows 文件共享
    SELinux 宽容模式(permissive) 强制模式(enforcing) 关闭(disabled) 几种模式之间的转换
    linux学习之 Linux下的Eclipse安装
  • 原文地址:https://www.cnblogs.com/hengwei/p/9090307.html
Copyright © 2011-2022 走看看