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