摘要:原文地址介绍一种生产环境的配置方案。概要先讲一下生产环境中的问题有多个,希望能够通过连接起来。因此生产环境中会同时存在无状态应用利用创建的。不会帮你检查名称冲突的情况,如果名称冲突了那么会得到错误的结果。
原文地址
介绍一种生产环境Docker overlay network的配置方案。
概要先讲一下生产环境中的问题:
有多个Docker host,希望能够通过Docker swarm连接起来。
Docker swarm只适合于无状态应用,不适合有状态应用。
因此生产环境中会同时存在
无状态应用:利用docker service create/docker stack deploy创建的。
有状态应用:利用docker run/docker compose up创建的。
希望两种应用能够连接到同一个overlay网络,在网络内部能够通过
tasks.
解决办法:
创建attachable的overlay network
有状态应用挂到这个overlay network上
无状态应用也挂到这个overlay network上
步骤到manager节点上创建attachable的overlay network,名字叫做prod-overlay:
docker network create -d overlay --attachable prod-overlay
在manager节点上查看这个网络是否创建成功:
$ docker network ls NETWORK ID NAME DRIVER SCOPE fbfde97ed12a bridge bridge local 73ab6bbac970 docker_gwbridge bridge local a2adb3de5f7a host host local nm7pgzuh6ww4 ingress overlay swarm 638e550dab67 none null local qqf78g8iio10 prod-overlay overlay swarm
在worker节点上查看这个网络,这时你看不到这个网络,不过不要担心,当后面在worker节点上创建工作负载后就能看到了:
$ docker network ls NETWORK ID NAME DRIVER SCOPE fbfde97ed12a bridge bridge local 73ab6bbac970 docker_gwbridge bridge local a2adb3de5f7a host host local nm7pgzuh6ww4 ingress overlay swarm 638e550dab67 none null local
在manager上创建容器c1,挂到prod-overlay network上:
docker run --name c1 --network prod-overlay -itd busybox
在worker上创建容器c2,挂到prod-overlay network上:
docker run --name c2 --network prod-overlay -itd busybox
在manager上创建service c,挂到prod-overlay network上:
docker service create -td --name c --replicas 2 --network prod-overlay busybox验证 查看worker节点的network
之前在worker节点上没有看到prod-overlay network,现在你应该可以看见了:
$ docker network ls NETWORK ID NAME DRIVER SCOPE 01180b9d4833 bridge bridge local cd94df435afc docker_gwbridge bridge local 74721e7670eb host host local nm7pgzuh6ww4 ingress overlay swarm 32e6853ea78d none null local dw8kd2nb2yl3 prod-overlay overlay swarm确认容器可以互ping
到manager节点上,让c1 ping c2
$ docker exec c1 ping -c 2 c2 PING c2 (10.0.2.2): 56 data bytes 64 bytes from 10.0.2.2: seq=0 ttl=64 time=0.682 ms 64 bytes from 10.0.2.2: seq=1 ttl=64 time=0.652 ms
到manager节点上,让c1 ping tasks.c,tasks.c是之前创建的service c的DNS name:
$ docker exec c1 ping -c 2 tasks.c PING tasks.c (10.0.2.8): 56 data bytes 64 bytes from 10.0.2.8: seq=0 ttl=64 time=2.772 ms 64 bytes from 10.0.2.8: seq=1 ttl=64 time=0.694 ms
到manager节点上,让c1 查询 tasks.c的DNS name,可以看到tasks.c有两条记录:
$ docker exec c1 nslookup -type=a tasks.c Server: 127.0.0.11 Address: 127.0.0.11:53 Non-authoritative answer: Name: tasks.c Address: 10.0.2.7 Name: tasks.c Address: 10.0.2.8
到manager节点上,查看service c的task,看到有c.1、c.2两个task,分别部署在两个节点上:
$ docker service ps c ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS p5n70vhtnz2f c.1 busybox:latest docker-learn-1 Running Running 17 minutes ago byuoox1t7cve c.2 busybox:latest docker-learn-2 Running Running 17 minutes ago
到c.1 task所在的节点上,查看task c.1的容器名:
$ docker ps -f name=c.1 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 795a3bd3c20a busybox:latest "sh" 21 minutes ago Up 21 minutes c.1.p5n70vhtnz2f5q8p2pcvbyfmw
然后在c1里ping task c.1的容器名:
$ docker exec c1 ping -c 2 c.1.p5n70vhtnz2f5q8p2pcvbyfmw PING c.1.p5n70vhtnz2f5q8p2pcvbyfmw (10.0.2.7): 56 data bytes 64 bytes from 10.0.2.7: seq=0 ttl=64 time=0.198 ms 64 bytes from 10.0.2.7: seq=1 ttl=64 time=0.128 ms
你同样可以:
在c2里:
ping c1
ping tasks.c
ping task c.1、c.2的容器
在task c.1、c.2的容器里:
ping c1、c2;
ping tasks.c
ping task c.1、c.2的容器
注意通过docker run / docker compose up创建的容器的名字,要保证在整个集群里是唯一的。docker 不会帮你检查名称冲突的情况,如果名称冲突了那么会得到错误的DNS结果。
参考资料Use overlay networks
Use an overlay network for standalone containers
Docker Reference Architecture: Designing Scalable, Portable Docker Container Networks
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/28050.html
摘要:原文地址介绍如何使用的机制,自动发现并抓取网络中的容器所提供的指标。我们需要一种动态发现容器的方法。使用的机制,半自动的发现容器。文章最开始说到的半自动就是这个意思,我们得事先知道记录有哪些,然后让去发现这些记录背后对应的容器有哪些。 原文地址 介绍如何使用Prometheus的dns service discovery机制,自动发现并抓取Docker swarm overlay网络中...
摘要:配置网络参照生产环境配置中的和子网章节。特别注意观察和的子网是否与已有网络冲突如果有冲突则参考网络的中的方法修改子网。部署使用的是的监控方案。创建应用网络创建你也可以改成自己的名字参考网络的检查子网与是否配置正确。 原文 大纲 本文只是一种实际部署方案的例子,涉及到的技术有(除Docker/Docker Swarm外): Docker overlay network Fluentd...
摘要:如果的网卡为,则不需要此步骤设置和的以下步骤得在或之前做假设你有三个机器,,准备搞一个集群获得的参数,注意停掉删掉虚拟网卡启动重建,记得设置之前得到的参数和正确的值再到和上执行相同的命令。 原文地址 Docker Daemon生产环境配置提到了MTU设置,但是这只是针对于名为bridge的docker bridge network,对于overlay network是无效的。 如果do...
摘要:原文地址一些生产环境中要注意的参数配置。本文介绍一些生产环境中要特别注意的参数,这些参数可以通过在命令行参数形式给,也可以通过在里配置。然后执行来验证配置是否生效。它们的原理就是修改参数。 原文地址 一些docker daemon生产环境中要注意的参数配置。 本文介绍一些生产环境中dockerd要特别注意的参数,这些参数可以通过在dockerd命令行参数形式给,也可以通过在/etc/d...
摘要:后续将其他节点加入集群都会用到这个值将节点加入集群查看节点信息相关命令创建服务更新服务删除服务减少服务实例增加服务实例查看所有服务查看服务的容器状态查看服务的详细信息。前言本篇是Docker第十三篇,Docker的使用至此就介绍完成,接下来继续Kubernetes。Docker系列文章:为什么要学习DockerDocker基本概念Docker镜像基本原理Docker容器数据卷Dockerfi...
阅读 1263·2021-10-18 13:32
阅读 2330·2021-09-24 09:47
阅读 1321·2021-09-23 11:22
阅读 2461·2019-08-30 14:06
阅读 569·2019-08-30 12:48
阅读 1995·2019-08-30 11:03
阅读 533·2019-08-29 17:09
阅读 2460·2019-08-29 14:10