摘要:原文地址介紹一種生產環境的配置方案。概要先講一下生產環境中的問題有多個,希望能夠通過連接起來。因此生產環境中會同時存在無狀態應用利用創建的。不會幫你檢查名稱沖突的情況,如果名稱沖突了那么會得到錯誤的結果。
原文地址
介紹一種生產環境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
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/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...
閱讀 1270·2021-10-18 13:32
閱讀 2344·2021-09-24 09:47
閱讀 1331·2021-09-23 11:22
閱讀 2469·2019-08-30 14:06
閱讀 576·2019-08-30 12:48
閱讀 2004·2019-08-30 11:03
閱讀 541·2019-08-29 17:09
閱讀 2469·2019-08-29 14:10