热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:docker+calico网络,实现不同容器之间的相互访问

本文由编程笔记#小编为大家整理,主要介绍了docker+calico网络,实现不同容器之间的相互访问相关的知识,希望对你有一定的参考价值。
本文由编程笔记#小编为大家整理,主要介绍了docker + calico网络,实现不同容器之间的相互访问相关的知识,希望对你有一定的参考价值。



docker use calico
#基础环境
IP 主机名 系统版本 安装组件
192.168.56.151 node1 centos7.4 docker、calicoctl、etcd
192.168.56.152 node2 centos7.4 docker、calicoctl、etcd
192.168.56.153 node3 centos7.4 docker、calicoctl、etcd
###docker
#所有节点执行安装docker
yum install docker -y
systemctl start docker
systemctl enable docker

###etcd
#所有节点执行安装etcd
yum install etcd -y
#NODE
-1
cat > /etc/etcd/etcd.conf <<EOF
#[Member]
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"
ETCD_NAME
="node1"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS
="http://192.168.56.151:2380"
ETCD_ADVERTISE_CLIENT_URLS
="http://192.168.56.151:2379"
ETCD_INITIAL_CLUSTER
="node1=http://192.168.56.151:2380,node2=http://192.168.56.152:2380,node3=http://192.168.56.153:2380"
EOF
#NODE
-2
cat > /etc/etcd/etcd.conf <<EOF
#[Member]
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"
ETCD_NAME
="node2"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS
="http://192.168.56.152:2380"
ETCD_ADVERTISE_CLIENT_URLS
="http://192.168.56.152:2379"
ETCD_INITIAL_CLUSTER
="node1=http://192.168.56.151:2380,node2=http://192.168.56.152:2380,node3=http://192.168.56.153:2380"
EOF
#NODE
-3
cat > /etc/etcd/etcd.conf <<EOF
#[Member]
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"
ETCD_NAME
="node3"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS
="http://192.168.56.153:2380"
ETCD_ADVERTISE_CLIENT_URLS
="http://192.168.56.153:2379"
ETCD_INITIAL_CLUSTER
="node1=http://192.168.56.151:2380,node2=http://192.168.56.152:2380,node3=http://192.168.56.153:2380"
EOF
systemctl start etcd
systemctl enable etcd
etcdctl member list
##修改docker支持etcd
#node
-1
#ExecStart后增加
--cluster-store=etcd://192.168.56.151:2379

#node
-2
#ExecStart后增加
--cluster-store=etcd://192.168.56.152:2379

#node
-3
#ExecStart后增加
--cluster-store=etcd://192.168.56.153:2379

#####CALICO
#node
-1
docker run
--net=host --privileged --name=calico-node -d --restart=always -e NODENAME=node1 -e CALICO_NETWORKING_BACKEND=bird -e CALICO_LIBNETWORK_ENABLED=true -e IP=192.168.56.151 -e ETCD_ENDPOINTS=http://127.0.0.1:2379
-v /var/log/calico:/var/log/calico -v /var/run/calico:/var/run/calico -v /lib/modules:/lib/modules -v /run:/run -v /run/docker/plugins:/run/docker/plugins -v /var/run/docker.sock:/var/run/docker.sock quay.io/calico/node:v2.6.10
#node
-2
docker run
--net=host --privileged --name=calico-node -d --restart=always -e NODENAME=node2 -e CALICO_NETWORKING_BACKEND=bird -e CALICO_LIBNETWORK_ENABLED=true -e IP=192.168.56.152 -e ETCD_ENDPOINTS=http://127.0.0.1:2379
-v /var/log/calico:/var/log/calico -v /var/run/calico:/var/run/calico -v /lib/modules:/lib/modules -v /run:/run -v /run/docker/plugins:/run/docker/plugins -v /var/run/docker.sock:/var/run/docker.sock quay.io/calico/node:v2.6.10
#node
-3
docker run
--net=host --privileged --name=calico-node -d --restart=always -e NODENAME=node3 -e CALICO_NETWORKING_BACKEND=bird -e CALICO_LIBNETWORK_ENABLED=true -e IP=192.168.56.153 -e ETCD_ENDPOINTS=http://127.0.0.1:2379
-v /var/log/calico:/var/log/calico -v /var/run/calico:/var/run/calico -v /lib/modules:/lib/modules -v /run:/run -v /run/docker/plugins:/run/docker/plugins -v /var/run/docker.sock:/var/run/docker.sock quay.io/calico/node:v2.6.10
#查看calico状态
[[email&#160;protected]
~]# calicoctl node status
Calico process is running.
IPv4 BGP status
+----------------+-------------------+-------+----------+-------------+
| PEER ADDRESS | PEER TYPE | STATE | SINCE | INFO |
+----------------+-------------------+-------+----------+-------------+
| 192.168.56.152 | node-to-node mesh | up | 14:29:26 | Established |
| 192.168.56.153 | node-to-node mesh | up | 14:31:16 | Established |
+----------------+-------------------+-------+----------+-------------+
IPv6 BGP status
No IPv6 peers found.
###测试
calicoctl get ipPool
cat >ipPool <<EOF
- apiVersion: v1
kind: ipPool
metadata:
cidr:
10.20.0.0/24
spec:
ipip:
enabled:
true
nat
-outgoing: true
EOF
calicoctl create
-f ipPool.yaml
####连通性验证
在上面创建的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
在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`


推荐阅读
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • 标题: ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
author-avatar
xueer2502938817_416
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有