码迷,mamicode.com
首页 > 其他好文 > 详细

容器中跨主机的网络方案-Calico

时间:2018-05-25 21:13:10      阅读:396      评论:0      收藏:0      [点我收藏+]

标签:ali   结构   控制   sdn   name   https   lease   nat   公有   

容器中的网络是建立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网络的实现方式。其实现方式相对比较简单,性能损耗更小。

容器中跨主机的网络方案-Calico

标签:ali   结构   控制   sdn   name   https   lease   nat   公有   

原文地址:https://www.cnblogs.com/hengwei/p/9090307.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!