dockerfile cmd執(zhí)行多個(gè)命令 微服務(wù)在Docker k8s下如何部署?
微服務(wù)在Docker k8s下如何部署?最近,這些技術(shù)已經(jīng)在項(xiàng)目中使用。讓我介紹一些有價(jià)值的想法。首先,結(jié)論如下:1。K8s是一款非常好的技術(shù),非常穩(wěn)定。如果發(fā)現(xiàn)正在運(yùn)行的pod數(shù)量不等于用戶設(shè)置的期
微服務(wù)在Docker k8s下如何部署?
最近,這些技術(shù)已經(jīng)在項(xiàng)目中使用。讓我介紹一些有價(jià)值的想法。
首先,結(jié)論如下:
1。K8s是一款非常好的技術(shù),非常穩(wěn)定。如果發(fā)現(xiàn)正在運(yùn)行的pod數(shù)量不等于用戶設(shè)置的期望值,k8s將自動(dòng)創(chuàng)建或刪除pod,直到它們相等為止。這不僅確保了服務(wù)的不間斷運(yùn)行,而且還動(dòng)態(tài)地?cái)U(kuò)展了服務(wù)規(guī)范。用戶只需要調(diào)整pod的復(fù)制次數(shù),剩下的留給k8s,這很容易讓人擔(dān)心。
2. 使用Jenkins集成命令行操作,雖然我個(gè)人比較喜歡使用命令行,但我不得不承認(rèn),使用Jenkins集成命令行操作將大大提高工作效率。
實(shí)現(xiàn)步驟如下:(本文以Azure平臺(tái)為例)
1。寫dockerfile
2。在Jenkins中創(chuàng)建任務(wù)并執(zhí)行包含以下命令的腳本
2.1 git將源代碼拉到本地
2.2 docker build命令生成映像文件
2.3 docker定義映像文件版本號(hào)并上載到Azure平臺(tái)
2.4 kubectl命令創(chuàng)建k8s部署和服務(wù)。
每個(gè)版本2.5update,可以調(diào)用update image來編譯新的鏡像版本并提供給k8s
注意,在創(chuàng)建k8s的部署和服務(wù)時(shí),需要用yaml格式編寫配置文件。部署配置包括名稱、映像文件地址、最大和最小CPU分配值、最大和最小內(nèi)存分配值等。服務(wù)配置文件包括名稱、引用的部署名稱以及是否使用負(fù)載平衡器。
有關(guān)更多詳細(xì)信息,請(qǐng)參閱我的wikihttps://github.com/FamingHou/MyWiki
如何避免Docker容器啟動(dòng)腳本運(yùn)行后自動(dòng)退出?
以下方法用于依次運(yùn)行每個(gè)容器的腳本:1。使用kunetteres方法啟動(dòng)docker進(jìn)程。以下是開始-庫伯內(nèi)特斯.sh2,然后在dockerfile中,開始-庫伯內(nèi)特斯.sh指定默認(rèn)情況下要為docker容器執(zhí)行的命令。三。需要注意的一點(diǎn)是開始-庫伯內(nèi)特斯.sh腳本將作為docker容器的1號(hào)進(jìn)程運(yùn)行,并且必須始終運(yùn)行。因?yàn)閐ocker容器只在進(jìn)程1運(yùn)行時(shí)保持運(yùn)行,換句話說,docker容器將在進(jìn)程1退出后退出。因?yàn)閗ubernetes的每個(gè)組件都是作為后臺(tái)進(jìn)程執(zhí)行的,所以在腳本的末尾添加了一個(gè)死循環(huán)以保持啟動(dòng)-庫伯內(nèi)特斯.sh腳本始終在運(yùn)行。4主管是一種過程管理工具。此時(shí),需要編寫管理器配置文件庫伯內(nèi)特斯.conf: 5. 將kubernetes的每個(gè)組件的啟動(dòng)命令設(shè)置為command。將autorestart參數(shù)設(shè)置為true意味著supervisor將負(fù)責(zé)重新啟動(dòng)意外退出的組件。stdout Logfile和stderr Logfile參數(shù)可用于設(shè)置命令的標(biāo)準(zhǔn)輸出文件和標(biāo)準(zhǔn)錯(cuò)誤輸出文件。6然后,在dockerfile中,指定supervisor作為docker容器的默認(rèn)命令:7。此時(shí),supervisor是docker容器中的第一個(gè)進(jìn)程,它還需要繼續(xù)運(yùn)行。當(dāng)nodaemon設(shè)置為true時(shí),supervisor將保持在前臺(tái)而不是后臺(tái)運(yùn)行。如果主管在后臺(tái)運(yùn)行,docker容器將在執(zhí)行supervisor命令后立即退出。
~]#docker run-M 512M-memory swap 1g-it-P 58080:8080-restart=always
-name bvrfis-logdata中的卷mytomcat:4.0/root/run.sh
--重新啟動(dòng)特定參數(shù)值詳細(xì)信息:
否-當(dāng)容器退出時(shí),不要重新啟動(dòng)容器;
失敗時(shí)-僅當(dāng)容器以非零狀態(tài)退出時(shí)重新啟動(dòng)容器;
始終-無論退出狀態(tài)如何重新啟動(dòng)容器;
如果要在打開容器時(shí)自動(dòng)啟動(dòng)docker容器中的應(yīng)用程序服務(wù)。只需在dockerfile中編寫服務(wù)啟動(dòng)腳本,然后使用dockerfile重建映像:
編寫應(yīng)用程序服務(wù)自啟動(dòng)腳本
編寫dockerfile
重建映像
打開容器