?
本文檔使用 php中文網(wǎng)手冊 發(fā)布
當您首次安裝并開始使用Docker Engine時,群集模式默認處于禁用狀態(tài)。當您啟用群集模式時,您將使用通過docker service
命令管理的服務(wù)概念。
在群集模式下運行引擎有兩種方法:
創(chuàng)建一個新的群體,在本文中討論。
加入現(xiàn)有的群。
當您在本地計算機上以群集模式運行引擎時,可以根據(jù)您創(chuàng)建的映像或其他可用映像來創(chuàng)建和測試服務(wù)。在您的生產(chǎn)環(huán)境中,群集模式提供具有群集管理功能的容錯平臺,以保持您的服務(wù)正常運行。
這些說明假定您已經(jīng)在機器上安裝了Docker Engine 1.12或更高版本,以充當群中的管理器節(jié)點。
如果還沒有,請閱讀群模式關(guān)鍵概念并嘗試群模式教程。
當您運行命令創(chuàng)建群集時,Docker引擎開始以群集模式運行。
運行docker swarm init
以在當前節(jié)點上創(chuàng)建單節(jié)點群。引擎設(shè)置如下:
將當前節(jié)點切換為群集模式。
創(chuàng)建一個名為的default
群。
指定當前節(jié)點為群集的領(lǐng)導(dǎo)管理節(jié)點。
用機器主機名命名節(jié)點。
將管理器配置為偵聽端口2377上的活動網(wǎng)絡(luò)接口。
將當前節(jié)點設(shè)置為Active
可用性,這意味著它可以從調(diào)度程序接收任務(wù)。
為參與群體的引擎啟動一個內(nèi)部分布式數(shù)據(jù)存儲,以維護群集及其上運行的所有服務(wù)的一致視圖。
默認情況下,為該群體生成一個自簽名的根CA.
默認情況下,為worker和manager節(jié)點生成令牌以加入群集。
創(chuàng)建一個覆蓋網(wǎng)絡(luò)ingress
,該網(wǎng)絡(luò)命名為發(fā)布群體外部的服務(wù)端口。
輸出用于docker swarm init
提供在將新工作節(jié)點加入群集時使用的連接命令:
$ docker swarm init Swarm initialized: current node (dxn1zf6l61qsb1josjja83ngz) is now a manager.To add a worker to this swarm, run the following command: docker swarm join \ --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \ 192.168.99.100:2377To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
管理器節(jié)點使用通告地址允許群中的其他節(jié)點訪問Swarmkit API并覆蓋網(wǎng)絡(luò)。群中的其他節(jié)點必須能夠通過其通告地址IP地址訪問管理器節(jié)點。
如果您未指定廣告地址,則Docker將檢查系統(tǒng)是否具有單個IP地址。如果是這樣,默認情況下,Docker使用偵聽端口的IP地址2377
。如果系統(tǒng)有多個IP地址,則必須指定正確的--advertise-addr
以啟用管理員間通信和覆蓋網(wǎng)絡(luò):
$ docker swarm init --advertise-addr <MANAGER-IP>
您還必須指定--advertise-addr
其他節(jié)點到達第一個管理器節(jié)點的地址是否與管理員認為的地址不同。例如,在跨越不同區(qū)域的云設(shè)置中,主機具有用于在該區(qū)域內(nèi)訪問的內(nèi)部地址和用于從該區(qū)域外訪問的外部地址。在這種情況下,請指定外部地址,--advertise-addr
以便節(jié)點可以將該信息傳播到隨后連接到其上的其他節(jié)點。
docker swarm init
有關(guān)廣告地址的更多詳細信息,請參閱CLI參考。
節(jié)點需要一個秘密的令牌來加入群。工作節(jié)點的標記與管理器節(jié)點的標記不同。節(jié)點在加入群時只使用連接令牌。在節(jié)點已經(jīng)加入群體之后旋轉(zhuǎn)連接令牌不會影響節(jié)點的群集成員資格。令牌輪轉(zhuǎn)可確保任何嘗試加入群集的新節(jié)點都不能使用舊令牌。
要檢索包含工作節(jié)點的連接令牌的連接命令,請運行:
$ docker swarm join-token worker To add a worker to this swarm, run the following command: docker swarm join \ --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \ 192.168.99.100:2377This node joined a swarm as a worker.
要查看管理器節(jié)點的連接命令和令牌,請運行:
$ docker swarm join-token manager To add a worker to this swarm, run the following command: docker swarm join \ --token SWMTKN-1-59egwe8qangbzbqb3ryawxzk3jn97ifahlsrw01yar60pmkr90-bdjfnkcflhooyafetgjod97sz \ 192.168.99.100:2377
通過--quiet
標志只打印令牌:
$ docker swarm join-token --quiet worker SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c
加入令牌時要小心,因為它們是加入群集所必需的秘密。特別是,將一個秘密檢查到版本控制是一個不好的做法,因為它允許任何有權(quán)訪問應(yīng)用程序源代碼的人向群中添加新節(jié)點。經(jīng)理令牌特別敏感,因為它們允許新的經(jīng)理節(jié)點加入并獲得整個群體的控制權(quán)。
建議在以下情況下旋轉(zhuǎn)聯(lián)接令牌:
如果令牌意外簽入到版本控制系統(tǒng),則組聊天或意外地打印到您的日志中。
如果您懷疑某個節(jié)點已被破壞。
如果您希望保證沒有新的節(jié)點能夠加入群集。
此外,對包括群集加入令牌在內(nèi)的任何秘密實施定期輪換計劃是最佳做法。我們建議您至少每6個月旋轉(zhuǎn)一次令牌。
運行swarm join-token --rotate
以使舊的令牌失效并生成新的令牌。指定是否要旋轉(zhuǎn)worker
或manager
節(jié)點的標記:
$ docker swarm join-token --rotate worker To add a worker to this swarm, run the following command: docker swarm join \ --token SWMTKN-1-2kscvs0zuymrsc9t0ocyy1rdns9dhaodvpl639j2bqx55uptag-ebmn5u927reawo27s3azntd44 \ 192.168.99.100:2377
將節(jié)點連接到一個群中
swarm init
命令行引用
群模式教程