微服務(wù)和docker的關(guān)系 微服務(wù)在Docker k8s下如何部署?
微服務(wù)在Docker k8s下如何部署?正好最近在項(xiàng)目中用到了這些技術(shù),我來(lái)拋磚引玉吧。首先說(shuō)結(jié)論:1. k8s 是非常好的一項(xiàng)技術(shù),很穩(wěn)定。如果發(fā)現(xiàn)正在運(yùn)行的 pod 的數(shù)量不等于用戶設(shè)定的期望值,
微服務(wù)在Docker k8s下如何部署?
正好最近在項(xiàng)目中用到了這些技術(shù),我來(lái)拋磚引玉吧。
首先說(shuō)結(jié)論:
1. k8s 是非常好的一項(xiàng)技術(shù),很穩(wěn)定。如果發(fā)現(xiàn)正在運(yùn)行的 pod 的數(shù)量不等于用戶設(shè)定的期望值, k8s 則會(huì)自動(dòng)創(chuàng)建或者刪除 pod,直到兩者相等。這樣既保障了服務(wù)的不間斷運(yùn)行,同時(shí)還可以動(dòng)態(tài)縮放服務(wù)的規(guī)格。用戶只要調(diào)整 pod 的 replicate 的數(shù)量即可,其他的都交給 k8s 就好,非常省心。
2. 要用 jenkins 來(lái)集成命令行操作,雖然我個(gè)人非常偏愛使用命令行,但是我不得不承認(rèn)用 jenkins 集成命令行操作會(huì)極大的提升工作效率。
下面說(shuō)實(shí)現(xiàn)步驟:(本文以 azure 平臺(tái)為例)
1. 編寫 Dockerfile
2. 在 jenkins 創(chuàng)建任務(wù),并執(zhí)行包含如下命令的腳本
2.1 git pull 源代碼到本地
2.2 docker build 命令生成鏡像文件
2.3 docker 定義鏡像文件版本號(hào)并上傳到 azure 平臺(tái)
2.4 kubectl 命令來(lái)創(chuàng)建 k8s 的 deployment & service.
2.5 每次版本更新可以調(diào)用 update image 來(lái)編譯新的鏡像版本并提供給 k8s 使用
注意在創(chuàng)建 k8s 的 deployment 和 service 的時(shí)候需要編寫 yaml 格式的配置文件, deployment 配置包括 名稱,鏡像文件地址, cpu 最大最小分配值,內(nèi)存最大最小分配值等。service 配置文件包括 名稱,引用的 deployment 名稱,以及是否使用 load balancer等。
更多詳細(xì)信息可以參考我的 wiki. https://github.com/FamingHou/MyWiki
微服務(wù)為什么要選擇docker?
早在2013年的時(shí)候,docker就已經(jīng)發(fā)行,然而那會(huì)還是很少人了解docker。一直到2014年,Martin Fowler提出了微服務(wù)的概念,兩個(gè)不相干的技術(shù)終于走在了一起,創(chuàng)造了今天的輝煌!現(xiàn)在:用上了docker容器后,將Docker可以將我們的應(yīng)用程序打包封裝到一個(gè)容器中,該容器包含了應(yīng)用程序的代碼、運(yùn)行環(huán)境、依賴庫(kù)、配置文件等必需的資源。容器之間達(dá)到進(jìn)程級(jí)別的隔離,在容器中的操作,不會(huì)影響道宿主機(jī)和其他容器,這樣就不會(huì)出現(xiàn)應(yīng)用之間相互影響的情形!