基于kubernetes的微服務 微服務在Docker k8s下如何部署?
微服務在Docker k8s下如何部署?最近,這些技術(shù)已經(jīng)在項目中使用。讓我介紹一些有價值的想法。首先,結(jié)論如下:1。K8s是一款非常好的技術(shù),非常穩(wěn)定。如果發(fā)現(xiàn)正在運行的pod數(shù)量不等于用戶設置的期
微服務在Docker k8s下如何部署?
最近,這些技術(shù)已經(jīng)在項目中使用。讓我介紹一些有價值的想法。
首先,結(jié)論如下:
1。K8s是一款非常好的技術(shù),非常穩(wěn)定。如果發(fā)現(xiàn)正在運行的pod數(shù)量不等于用戶設置的期望值,k8s將自動創(chuàng)建或刪除pod,直到它們相等為止。這不僅確保了服務的不間斷運行,而且還動態(tài)地擴展了服務規(guī)范。用戶只需要調(diào)整pod的復制次數(shù),剩下的留給k8s,這很容易讓人擔心。
2. 使用Jenkins集成命令行操作,雖然我個人比較喜歡使用命令行,但我不得不承認,使用Jenkins集成命令行操作將大大提高工作效率。
實現(xiàn)步驟如下:(本文以Azure平臺為例)
1。寫dockerfile
2。在Jenkins中創(chuàng)建任務并執(zhí)行包含以下命令的腳本
2.1 git將源代碼拉到本地
2.2 docker build命令生成映像文件
2.3 docker定義映像文件版本號并上載到Azure平臺
2.4 kubectl命令創(chuàng)建k8s部署和服務。
每個版本2.5update,可以調(diào)用update image來編譯新的鏡像版本并提供給k8s
注意,在創(chuàng)建k8s的部署和服務時,需要用yaml格式編寫配置文件。部署配置包括名稱、映像文件地址、最大和最小CPU分配值、最大和最小內(nèi)存分配值等。服務配置文件包括名稱、引用的部署名稱以及是否使用負載平衡器。
有關(guān)更多詳細信息,請參閱我的wikihttps://github.com/FamingHou/MyWiki
如何在K8S平臺部署微服務?
如果您正在談論k8s服務發(fā)現(xiàn),您不需要它,因為k8s有一個coredns來解析部署的k8s服務。如果您談論的是微服務本身的服務發(fā)現(xiàn),比如Eureka,那么您仍然需要它。我很高興回答你的問題。
目前,我們正在進行一個充分利用微服務體系結(jié)構(gòu)的項目。這也是一個很大的方便。
首先,要確定模塊的劃分,就我們的項目而言,它分為:
1 API接口
2。模塊負責具體的邏輯處理,前端模塊與本模塊通過grpc進行通信
3。異步處理模塊,有些任務需要很長時間,模塊2會向Kafka發(fā)送一條消息,這個模塊會從Kafka那里獲取消息并進行異步處理
系統(tǒng)部署在kubernetes上,所有模塊都編譯成docker鏡像并上傳到自己的私有鏡像repo。
每個模塊都有多個副本用于負載平衡。模塊間的通信由kubernetes集群服務實現(xiàn)。
Kubernetes ingress負責提供外部訪問接口和SSL處理。
外層使用負載均衡器實現(xiàn)多集群間的負載均衡和容錯。多個集群部署在不同的區(qū)域,以避免由于區(qū)域問題而導致服務不可用。
Istio還用于集群中,以利用服務網(wǎng)格。
此外,監(jiān)控也是必不可少的。我們使用普羅米修斯監(jiān)控各種指標和報警管理器來實現(xiàn)報警。
Elk用于記錄和查詢?nèi)罩?,Jaeger用于跟蹤模塊之間的相同請求。
目前運行穩(wěn)定,效果很好。
我希望我的回答能幫助你。