摘要:當然此時的局限性較大,比如沒有副本和負載均衡的概念,這導致服務(wù)無法高可用當然也更不存在什么服務(wù)網(wǎng)絡(luò)管理和跨節(jié)點數(shù)據(jù)存儲這些東西沒有服務(wù)模型集群中服務(wù)間關(guān)系和啟動順序編排也很復雜于是就有了下面的的誕生。
在我的《Docker Swarm集群初探》一文中,我們實際體驗了Docker Swarm容器集群技術(shù)的魅力,與《Kubernetes實踐錄》一文中提到的Kubernetes集群技術(shù)相比,Docker Swarm沒有Kubernetes顯得那么厚重,因此可以認為是更加輕量級的容器集群技術(shù),這也就意味著上手更加方便快捷,使用起來也要省事很多。作為Docker集群技術(shù)三(或“四”)架馬車之一的Docker Swarm,它從一開始便是Docker官方的“親兒子”,發(fā)展到現(xiàn)在也經(jīng)歷了很多階段和迭代。作者在學習的過程中也了解了一點其發(fā)展歷史,發(fā)現(xiàn)有幾個概念還是挺容易混淆的,因此撰寫成文,是梳理,也是總結(jié)。
注: 本文首發(fā)于 My 公眾號 CodeSheep ,可 長按 或 掃描 下面的 小心心 來訂閱 ↓ ↓ ↓
早在2014年底,Docker公司就設(shè)計了容器集群的方案組合:Machine + Swarm + Compose。其中Machine主要用于快速創(chuàng)建Docker運行環(huán)境,其支持在創(chuàng)建出來的節(jié)點上自動部署Swarm,此時的Swarm我們稱為 “經(jīng)典Swarm”,它是一款整合跨節(jié)點網(wǎng)絡(luò)的集群式容器服務(wù),其利用Docker守護進程的API,將多節(jié)點的計算資源進行匯總,并提供兼容Docker的運行API,使用者只需要在執(zhí)行Docker命令工具時,用--host參數(shù)將目標設(shè)置為Swarm服務(wù)的IP和端口,即可操作整個容器集群。
當然此時的Swarm局限性較大,比如:
沒有副本和負載均衡的概念,這導致服務(wù)無法高可用
當然也更不存在什么服務(wù)網(wǎng)絡(luò)管理和跨節(jié)點數(shù)據(jù)存儲這些東西
沒有服務(wù)模型:集群中服務(wù)間關(guān)系和啟動順序編排也很復雜
于是就有了下面的SwarmKit的誕生。
在2016年2月,Docker公司開始了一個名叫 SwarmKit 的項目。而恰在Docker 1.12 RC之前的一段時間,Docker 發(fā)布了 Swarmkit,這是一個獨立的、開源的容器編排項目。SwarmKit不同于一開始的經(jīng)典Swarm,它從一開始就重新設(shè)計了一套獨立的API和模型體系,并且采用獨立的客戶端命令行工具:swarmctl
和上面的經(jīng)典Swarm模型相比,它加入了如下特性:
重新設(shè)計的一套獨立的API和模型體系
使用了自己的CLI(swarmd命令負責管理,swarmctl命令用于控制)
節(jié)點管理、服務(wù)模型更加自然,提供編排和調(diào)度服務(wù)
將過去Swarm依賴的外部集群一致性存儲組件Etcd的核心部分內(nèi)置化
然而此時的SwarmKit并沒有提供諸如服務(wù)發(fā)現(xiàn)、負載均衡和路由等功能。盡管如此,SwarmKit其實已經(jīng)是我們今天廣泛使用的Docker Swarm集群技術(shù)的基石。
Swarm Mode則更進一步,它在Docker 1.12版本開始為大家所周知,一個 docker swarm命令 紅遍大江南北,這個所謂的Swarm Mode其實就是我們今天所廣泛使用的Docker Swarm集群技術(shù)。
然而Swarm Mode并不是一個全新的東西,也并不是一個全新的模式,而是站在SwarmKit的巨人肩膀上發(fā)展起來的,是Docker中的一組與集群相關(guān)功能的統(tǒng)稱而已。Docker將SwarmKit的核心模塊內(nèi)嵌于Docker的后臺服務(wù)之中,通過不同的命令允許使用者同時以“本節(jié)點”和“本集群”這兩種視角來操作整個集群,增加了集群的管理、節(jié)點的管理、服務(wù)的管理和編排等等一系列高級特性,就像在我的《Docker Swarm集群初探》一文中體驗的那樣。
因此總結(jié)一下Swarm Mode就是:
基于Swarmkit編寫
支持服務(wù)模型以及服務(wù)發(fā)現(xiàn)、路由和負載均衡等新功能
使用Docker原生態(tài)的CLI命令
集成到了Docker engine中(強大的 docker swarm 命令)
如果用一張圖來表示 Docker、經(jīng)典Swarm、SwarmKit、Swarm Mode 四個概念之間的關(guān)系,則大致可以如下圖所示:
正如圖中所示,SwarmKit 和 Swarm Mode 重疊的部分表示的是相應的項目之間存在代碼層面的互相引用或組件形式的依賴,其實 Swarm Mode 所創(chuàng)建的集群本質(zhì)上并無異于 SwarmKit 集群。
更細致一點,我們從SwarmKit和Swarm Mode二者在一些常用命令操作上的比較來看看二者的區(qū)別和聯(lián)系:
1. 創(chuàng)建集群
SwarmKit方式:swarmd
SwarmMode方式:docker swarm init
2. 往集群中添加節(jié)點
SwarmKit方式:swarmd --hostname worknode --join-addr [IP:端口] --join-token [Token]
SwarmMode方式:docker swarm join --token [token] [IP:端口]
3. 查看集群節(jié)點信息
SwarmKit方式:swarmctl node ls
SwarmMode方式:docker node ls
4. 創(chuàng)建服務(wù)
SwarmKit方式:swarmctl service create --name [服務(wù)名] --image [鏡像名]
SwarmMode方式:docker service create --name [服務(wù)名] [鏡像名]
5. 服務(wù)擴容
SwarmKit方式:swarmctl service update [服務(wù)名] --replicas [副本數(shù)目]
SwarmMode方式:docker service scale [服務(wù)名]=[副本數(shù)目]
6. 服務(wù)(鏡像)升級
SwarmKit方式:swarmctl service update [服務(wù)名] --image [鏡像名]
SwarmMode方式:docker service update [服務(wù)名] --image [鏡像名]
從命令行操作來看,Swarm Mode其實非常類似于SwarmKit,然而前者更加靠近 Docker 原生態(tài)圈的命令,因此更加人性化。
作者更多的原創(chuàng)文章在此,歡迎觀賞
My Personal Blog
作者更多的SpringBt實踐文章在此:
Spring Boot應用監(jiān)控實戰(zhàn)
SpringBoot應用部署于外置Tomcat容器
ElasticSearch搜索引擎在SpringBt中的實踐
初探Kotlin+SpringBoot聯(lián)合編程
Spring Boot日志框架實踐
SpringBoot優(yōu)雅編碼之:Lombok加持
如果有興趣,也可以抽點時間看看作者一些關(guān)于容器化、微服務(wù)化方面的文章:
利用K8S技術(shù)棧打造個人私有云 連載文章
從一份配置清單詳解Nginx服務(wù)器配置
Docker容器可視化監(jiān)控中心搭建
利用ELK搭建Docker容器化應用日志中心
RPC框架實踐之:Apache Thrift
RPC框架實踐之:Google gRPC
微服務(wù)調(diào)用鏈追蹤中心搭建
Docker容器跨主機通信
Docker Swarm集群初探
高效編寫Dockerfile的幾條準則
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/27353.html
摘要:主機名命名空間,不同的內(nèi)部可以擁有不同的主機名。此外,也是解決跨平臺部署的利器。也許看完上述介紹大家還是云里霧里,沒關(guān)系,既然叫實戰(zhàn)指南,那么必然有實戰(zhàn)部分,我們從最簡單的程序開始。后續(xù)我們將介紹,如果利用運行你自己的程序。 原文地址:Docker實戰(zhàn)指南(一):Docker介紹 Introduction 我第一次注意到Docker大概是在2014年的時候,當時對Docker的第一印象...
摘要:微店技術(shù)團隊公眾號容器化之路這是一套以阿里云為基礎(chǔ),為核心,第三方服務(wù)為工具的開發(fā)測試部署流程,以及內(nèi)部的代碼提交,版本管理規(guī)范。如何打造安全的容器云平臺對,微服務(wù),來說都是非常好的落地實踐技術(shù)。 在使用 flow.ci 進行持續(xù)集成的過程中,也許你會遇到一些小麻煩。最近我們整理了一些常見問題在 flow.ci 文檔之 FAQ,希望對你有用。如果你遇到其他問題,也可以通過「在線消息」或...
摘要:前言我是,如果你還不認識我,不妨先看看技術(shù)的前世今生一平靜的生活已經(jīng)有一段日子了。傳送門技術(shù)的前世今生一技術(shù)的前世今生三 前言:我是JavaScript,如果你還不認識我,不妨先看看《Web技術(shù)的前世今生(一)》 平靜的生活已經(jīng)有一段日子了。 這一天,HTML大哥面露不悅地走過來問我: Js,你是打算和我們分家嗎? 大哥,您這說的哪里話,我什么地方做的不對么?我一臉茫然地回答道。 哼,...
摘要:前言我是,如果你還不認識我,不妨先看看技術(shù)的前世今生一平靜的生活已經(jīng)有一段日子了。傳送門技術(shù)的前世今生一技術(shù)的前世今生三 前言:我是JavaScript,如果你還不認識我,不妨先看看《Web技術(shù)的前世今生(一)》 平靜的生活已經(jīng)有一段日子了。 這一天,HTML大哥面露不悅地走過來問我: Js,你是打算和我們分家嗎? 大哥,您這說的哪里話,我什么地方做的不對么?我一臉茫然地回答道。 哼,...
摘要:前言我是,如果你還不認識我,不妨先看看技術(shù)的前世今生一平靜的生活已經(jīng)有一段日子了。傳送門技術(shù)的前世今生一技術(shù)的前世今生三 前言:我是JavaScript,如果你還不認識我,不妨先看看《Web技術(shù)的前世今生(一)》 平靜的生活已經(jīng)有一段日子了。 這一天,HTML大哥面露不悅地走過來問我: Js,你是打算和我們分家嗎? 大哥,您這說的哪里話,我什么地方做的不對么?我一臉茫然地回答道。 哼,...
閱讀 2283·2021-11-25 09:43
閱讀 1232·2021-11-23 09:51
閱讀 3570·2021-11-23 09:51
閱讀 3699·2021-11-22 09:34
閱讀 1674·2021-10-09 09:43
閱讀 2187·2019-08-30 15:53
閱讀 3217·2019-08-30 14:07
閱讀 643·2019-08-28 18:14