使用Calico配置Docker网络

试验环境

IP地址服务器
10.200.0.101node1
10.200.0.102node2
10.200.0.103etcd
软件名版本
centos7.2
calicoctl1.0.2
docker1.10.3
etcd2.3

配置与搭建

1) 状态协同工具etcd搭建
calico需要是通过etcd来实现各节点直接状态的协同。etcd集群的安装可以参考官方文档,这里使用的是单台(10.200.0.103)的2.3版本的etcd。

接下来的配置,需要在node1和node2上都进行操作,下面就以node1(10.200.0.101)为例进行说明。

2) 配置docker
docker的安装这里不多说,calico的官网上写的docker需要1.9及以后的版本,这里使用1.10的docker版本。

要想使用calico构建容器网络的话,docker daemon需要配置一个cluster store。由于calico使用的是etcd,在docker的/etc/sysconfig/docker配置文件的OPTIONS里面添加:

#根据实际情况替换<etcd_ip>和<etcd_port>
--cluster-store=etcd://10.200.0.103:2379

3) 使用calicoctl
calicoctl在1.0以后的版本,命令与之前有所改变。calicoctl 1.0之后calicoctl管理的都是资源(resource),之前版本的ip pool,profile, policy等都是资源。资源通过yaml或者json格式方式来定义,通过calicoctl create 或者apply来创建和应用,通过calicoctl get命令来查看。使用yaml或json来定义资源的格式为:

apiVersion: v1
kind: <type of resource>
metadata:
  # Identifying information
  name: <name of resource>
  ...
spec:
  # Specification of the resource
  ... 

calico支持的资源类型(kind)有:bgpPeer, hostEndpoint, policy, ipPool, profile, workloadEndpoint等。关于资源定义的详细,可参考官网

a) 下载calico的命令管理工具calicoctl
下载calicoctl的操作如下:

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

由于/usr/local/bin在系统的PATH路径里面,所以之后就可以直接使用calicoctl命令了。

b) 配置calicoctl的datastore
calicoctl默认是会读取/etc/calico/calicoctl.cfg的配置文件(也可以通过–config选项来指定要读取的配置文件),配置里指定etcd集群的地址,文件的格式类似如下:

apiVersion: v1
kind: calicoApiConfig
metadata:
spec:
  datastoreType: "etcdv2"
  etcdEndpoints: "http://etcd1:2379,http://etcd2:2379"

c) 运行calico/node
使用如下命令运行:

#以在node1上运行为例
sudo calicoctl node run --ip=10.200.0.101

服务器上还没有calico/node镜像的话,会先进行下载。运行成功后,可以看到正在运行的名为calico-node的容器。通过下面命令查看节点状态信息:

sudo calicoctl node status

d) 使用calicoctl创建ipPool
查看ip pool的命令为:

calicoctl get ipPool

创建ip pool首先定义一个资源文件ipPool.yaml,如:

- apiVersion: v1
  kind: ipPool
  metadata:
    cidr: 10.20.0.0/24
  spec:
    ipip:
      enabled: true
    nat-outgoing: true

然后运行命令进行创建:

calicoctl create -f ipPool.yaml

这样再通过calicoctl get ipPool命令查看,就会发现生成了一个10.20.0.0/24的ip pool。

连通性验证

在上面创建的ip pool(10.20.0.0/24)里创建子网络,如:

docker network create --driver calico --ipam-driver calico-ipam  --subnet 10.20.0.0/24 net1
docker network create --driver calico --ipam-driver calico-ipam  --subnet 10.20.0.0/24 net2
docker network create --driver calico --ipam-driver calico-ipam  --subnet 10.20.0.0/24 net3

上面创建了net1,net2和net3三个不同的网络。上面的命令在任意一个节点上执行即可。由于node1和node2使用的是同一套etcd,在两个节点上都可以通过docker network ls命令查看到生成的网络信息:
这里写图片描述

参考官网上的一个例子,在node1和node2上分别创建几个容器来测试下容器网络的连通性。

#node1
docker run --net net1 --name workload-A -tid busybox
docker run --net net2 --name workload-B -tid busybox
docker run --net net1 --name workload-C -tid busybox
#node2
docker run --net net3 --name workload-D -tid busybox
docker run --net net1 --name workload-E -tid busybox

可以在node1上使用如下命令来试验连通性:

#同一网络内的容器(即使不在同一节点主机上)可以使用容器名来访问
docker exec workload-A ping -c 4 workload-C.net1
docker exec workload-A ping -c 4 workload-E.net1
#不同网络内的容器需要使用容器ip来访问(使用容器名会报:bad address)
docker exec workload-A ping -c 2  `docker inspect --format "{{ .NetworkSettings.Networks.net2.IPAddress }}" workload-B`

同一网络内的容器是能相互通信的;不同网络内的容器相互是不通的。不同节点上属于同一网络的容器也是能相互通信的,这样就实现了容器的跨主机互连。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Calico是一种开源的容器网络解决方案,可以用于部署和管理容器网络。以下是部署Calico容器网络的步骤: 1. 准备环境:首先,需要确保你的服务器或虚拟机运行在一个支持容器运行环境的操作系统上,例如Linux。还要安装容器运行时,例如Docker或Kubernetes。 2. 下载Calico:在https://docs.projectcalico.org/getting-started/kubernetes/下载Calico的压缩包。将其解压到你选择的目录。 3. 配置Calico网络:通过编辑calico.yaml文件来配置Calico网络。可以设置Pod IP池,网络策略和其他选项。根据你的具体需求,进行相应的配置。 4. 部署Calico:运行calicoctl apply -f calico.yaml命令来部署Calico。该命令会将配置应用到Kubernetes集群中,并启动所需的容器和服务。 5. 验证部署:使用calicoctl命令行工具来验证部署是否成功。运行calicoctl node status命令来查看节点的状态。如果所有节点都处于正常状态,则说明部署成功。 6. 配置网络策略:根据需要,你可以通过calico.yaml文件或使用calicoctl命令行工具来配置网络策略。网络策略可用于控制容器间的网络通信,例如允许或禁止特定的流量。 7. 扩展和管理:在部署成功后,你可以使用calicoctl命令行工具管理Calico网络。你可以添加新的节点,更新配置,监控网络状态,解决故障等。可以根据需要进行扩展和管理。 使用Calico来部署容器网络可以提供可靠和高性能的容器网络解决方案。它支持网络策略,使得可以更好地控制容器间的通信。同时,Calico还提供了丰富的工具和命令,方便管理和扩展容器网络

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值