電腦配置清單表 微服務(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è)人非常偏愛(ài)使用命令行,但是我不得不承認(rèn)用 jenkins 集成命令行操作會(huì)極大的提升工作效率。
下面說(shuō)實(shí)現(xiàn)步驟:(本文以 azure 平臺(tái)為例)
1. 編寫(xiě) 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í)候需要編寫(xiě) yaml 格式的配置文件, deployment 配置包括 名稱,鏡像文件地址, cpu 最大最小分配值,內(nèi)存最大最小分配值等。service 配置文件包括 名稱,引用的 deployment 名稱,以及是否使用 load balancer等。
更多詳細(xì)信息可以參考我的 wiki. https://github.com/FamingHou/MyWiki
K8s網(wǎng)絡(luò)問(wèn)題自己能解決嗎?
你好,我是研華科技西安分公司的技術(shù)主管,目前正在進(jìn)行我司物聯(lián)網(wǎng)k8s云平臺(tái)的建設(shè)和開(kāi)發(fā),我來(lái)回答您的問(wèn)題:
k8s本身不處理具體的網(wǎng)絡(luò)問(wèn)題,事實(shí)上它也無(wú)法兼顧不同的網(wǎng)路需求和實(shí)現(xiàn)。k8s的做法是提出了CNI標(biāo)準(zhǔn),由不同的廠商通過(guò)插件的形式根據(jù)自己的需求去實(shí)現(xiàn)具體的網(wǎng)絡(luò)設(shè)施。目前比較流行的插件有:
- flannel:flannel的方式比較簡(jiǎn)單,它基于linux內(nèi)核的虛擬網(wǎng)橋機(jī)制實(shí)現(xiàn)了同一個(gè)k8s主機(jī)上不同容器之間的物理通信;對(duì)于不同主機(jī)不同pod之間的通信則使用了overlay網(wǎng)絡(luò),也就是在udp協(xié)議之上運(yùn)行vxlan協(xié)議。通信模型如下:overlay協(xié)議(vxlan over udp)抓包如下:
calico:calico把每臺(tái)k8s主機(jī)都模擬成一個(gè)路由器,并在其上面運(yùn)行BGP路由協(xié)議來(lái)實(shí)現(xiàn)k8s主機(jī)之間的通信,所以控制比較靈活,而且可以實(shí)現(xiàn)網(wǎng)絡(luò)安全方面的管理,目前我們的集群里采用的就是這個(gè)插件。calico的架構(gòu)如下:
canal:這個(gè)插件我沒(méi)有了解過(guò),研究過(guò)的朋友可以再做補(bǔ)充!
k8s為什么那么難部署?
k8s部署其實(shí)并不是特別難,但是如果你是要學(xué)習(xí)的話,那么,建議你把整體知識(shí)點(diǎn)先過(guò)一遍!另外,可以參考我自己的相關(guān)腳本,頭條搜”非常友好的kubernetes集群部署腳本”,使用腳本部署K8S的話會(huì)非常的快的!部署難度主要是因?yàn)榫W(wǎng)絡(luò)環(huán)境不通,導(dǎo)致各種各樣的插件出現(xiàn)超時(shí)。勸題主多一點(diǎn)耐心,而且K8S本身它的概念比較多,學(xué)習(xí)的重點(diǎn)還是重在理解各種各樣的專業(yè)概念,在日常的工作當(dāng)中,能夠及時(shí)處理問(wèn)題。
如何在CentOS7上部署Kubernetes集群?
安裝方式很多,既可以通過(guò)諸如kubeadm等第三方工具來(lái)輔助快速安裝kubernetes集群,也可以自己搭建節(jié)點(diǎn)然后裸機(jī)手動(dòng)安裝。前一種方法安裝比較快速方便,出錯(cuò)的概率小點(diǎn),而后者則可以幫助我們更好的理解kubernetes的架構(gòu)。建議可以搞兩個(gè)節(jié)點(diǎn),一主一叢,然后手動(dòng)搭建看看,遇到問(wèn)題解決問(wèn)題即可。
手動(dòng)在裸機(jī)上安裝我個(gè)人已經(jīng)完整的實(shí)踐過(guò),可以參考我的文章:https://www.jianshu.com/p/7d1fb03b8925