歡迎關注頭條號:老顧聊技術
精品原創技術分享,知識的組裝工
現在很多企業已經進入了docker容器化的部署方式,容器化的部署離不開容器編排的工具,現在用的最多的當屬K8S的編排工具。那項目從0開始時,一直進入到k8s中,整體流程是什麼,以及用到什麼工具組件呢?今天老顧就從整體上面來介紹一下。
1)開發人員提交代碼到git版本倉庫;2)Jenkins人工/定時觸發項目構建;3)jenkins拉取代碼、代碼編碼、打包鏡像、推送到測試環境的鏡像倉庫;4)k8s拉取鏡像產生pod中的容器5)測試環境中測試沒有問題後,把鏡像同步到生產的鏡像倉庫中6)生產環境K8S部署鏡像
git現在有的私有倉庫,有兩種選擇gitlab,gogs。
gogs
一開始老顧選擇的gogs,因為比較輕量級,消耗伺服器的資源也很少。但是gogs現有版本中缺少很重要的功能,就是在web界面上面操作拉取分支的功能,這個功能是平常經常用的,但比較可惜的是gogs現在不支持。
gitlab
gitlab功能還是比較強大的,唯一的缺點就是比較耗伺服器資源,最好用4G內存承載,要不然很慢哦
jenkins應該是持續集成的唯一選擇了,功能非常強大,強大的插件功能;不同的團隊應用jenkins的方式也不盡相同。
動態獲取Git倉庫Branch、Tag
配置好後,在build時,你可以選擇不同的分支
利用pom.xml文件構建項目
在Jenkins本機鏡像構建與推送到鏡像倉庫
REPOSITORY=192.168.110.10/qy-tribe/user-server:${branch}494949; --tt-darkmode-color: 494949; --tt-darkmode-color: 494949; --tt-darkmode-color: 494949; --tt-darkmode-color: 494949; --tt-darkmode-color: 494949; --tt-darkmode-color: 494949; --tt-darkmode-color: 上傳鏡像
docker push $REPOSITORY
上面是直接在jenkins的shell中輸入了構建鏡像腳本。
其實還有一種常用的方式就是在項目工程下新建Dockerfile文件,在可以利用mvn插件
在jenkins中使用shell
mvn dockerfile:build dockerfile:push
這樣就更簡單一點
注意點:因為我們會對同一個版本會構建多次,鏡像images會產生多次,會把上一次的鏡像的tag更改為none;我們要記得清除哪些被替換的image,可以使用腳本
注意點:jenkins結點需要安裝docker哦,不要忘了
docker images | grep none | awk &39; | xargs docker rmi
現在市面上的鏡像倉庫,不二人選肯定是harbor了,使用起來比較簡單,功能也是比較強大的
harbor的安裝推薦使用docker方式安裝,比較方便
https://github.com/goharbor/harbor/releases/download
harbor中有個複製管理,即是同步鏡像的功能。
很多網上有harbor的高可用,以及集群的架構方案,老顧認為沒有必要,應該harbor是在內部使用,高可用的需求不強烈。我們只要保證鏡像文件不丟失即可,正好harbor的複製管理即可完成此功能。
所以我們只要架設幾個harbor就ok了
k8s集群安裝是比較複雜的,網上介紹的有兩種方式kubeadm方式和二進位方式,我們今天介紹更簡單的方式,只要幾句命令就ok。
利用sealyun工具,利用go語言方式,能夠快速搭建k8s集群
結點規劃
主機名
IP位址
master01
192.168.0.2
master02
192.168.0.3
master03
192.168.0.4
work01
192.168.0.5
work02
192.168.0.6
注意:
系統支持:centos7.2以上 ubuntu16.04以上 內核推薦4.14以上
推薦配置:centos7.4
注意事項
1)必須同步所有伺服器時間
2)所有伺服器主機名不能重複
bin目錄即可, release頁面也可下載wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/latest/sealos && \ chmod +x sealos && mv sealos /usr/bin 安裝一個三master的kubernetes集群sealos init --passwd 123456 \ --master 192.168.0.2 --master 192.168.0.3 --master 192.168.0.4 \ --node 192.168.0.5 --node 192.168.0.6 \ --pkg-url /root/kube1.18.0.tar.gz \ --version v1.18.0
上面就是3條命令,就可以幫我們完成k8s集群的搭建,等待的時長根據自身的網絡環境。
注意:上面的passwd 123456,是5個伺服器結點的root密碼,一定要一樣哦
安裝好了k8s後,只能用命令方式控制k8s,是很不方便的,所以我們還需要安裝一個界面控制臺,我們這裡選擇強大的kuboard
wget https://github.com/sealstore/dashboard/releases/download/v1.0-1/kuboard.tarsealos install --pkg-url kuboard.tar
到這裡我們完成了k8s的安裝,來看看炫酷的界面
kuboard的優勢,可以在邏輯上面區分不同的層級,可以方便的讓我們一覽系統架構
為了讓集群外可以訪問集群裡面的訪問,需要安裝ingress
kubectl apply -f https://kuboard.cn/install-script/v1.16.2/nginx-ingress.yaml
配置service服務,以及ingress
老顧今天整體介紹把一個微服務項目,如何部署到k8s中,經過什麼流程,以及需要什麼工具,而且推薦了市面上面的主流工具。尤其介紹了k8s集群的搭建的工具,很推薦哦
當然具體工具的使用細節,需要小夥伴們自行搭建,裡面會遇到很多的坑,遇到坑就去解決,這樣理解起來會更好。
---End---
老顧的微服務網關分享課程,請大家多多支持
推薦閱讀
a、
b、
c、
d、
e、
f、
g、
h、
i、
j、
1、基於RocketMq的SpringCloud Stream框架實戰入門
2、如何搭建消息中間件應用框架之SpringCloud Stream
3、面試必備:網關異常了怎麼辦?如何做全局異常處理?
4、Gateway網關系列(二):SpringCloud Gateway入門實戰,路由規則
5、Gateway網關系列開篇:SpringCloud的官方網關Gateway介紹
6、API網關在微服務架構中的應用,這一篇就夠了
7、學習Lambda表達式看這篇就夠了,不會讓你失望的哦(續篇)
8、Lambda用在哪裡?幾種場景?
9、為什麼會出現Lambda表達式,你知道嗎?
10、不說「分布式事務」理論,直接上大廠阿里的解決方案,絕對實用
11、女程式設計師問到這個問題,讓我思考了半天,Mysql的「三高」架構
12、大廠二面:CAP原則為什麼只能滿足其中兩項?而不能同時滿足
13、阿里P7二面:聊聊零拷貝的原理
14、秒殺系統的核心點都在這裡,快來取
15、你了解如何利用token方式實現分布式Session嗎?
16、Mysql索引結構演變,為什麼最終會是那個結構呢?讓你一看就懂
17、一場比賽涉及到的知識,用通俗易通的方式介紹並發協調
18、企業實戰Redis全方面思考,你思考了嗎?
19、面試題:Thread的start和run的區別
20、面試題:什麼是CAS?CAS的作用以及缺點
21、如何訪問redis中的海量數據?避免事故產生
22、如何解決Redis熱點問題?以及如何發現熱點?
23、如何設計API接口,實現統一格式返回?
24、你真的知道在生產環境下如何部署tomcat嗎?
25、分享一線網際網路大廠分布式唯一ID設計 之 snowflake方案
26、分享大廠分布式唯一ID設計方案,快來圍觀
27、你想了解一線大廠的分布式唯一ID生成方案嗎?
28、你知道如何處理大數據量嗎?(數據拆分篇)
29、如何永不遷移數據和避免熱點? 根據伺服器指標分配數據量(揭秘篇)
30、你知道怎麼分庫分表嗎?如何做到永不遷移數據和避免熱點嗎?
31、你了解大型網站的頁面靜態化嗎?
32、你知道如何更新緩存嗎?如何保證緩存和資料庫雙寫一致性?
33、你知道怎麼解決DB讀寫分離,導致數據不一致問題嗎?
34、DB讀寫分離情況下,如何解決緩存和資料庫不一致性問題?
35、你真的知道怎麼使用緩存嗎?
36、如何利用鎖,防止緩存擊穿?重構思想的重要性
37、海量訂單產生的業務高峰期,如何避免消息的重複消費?
38、你知道如何保障生產端100%消息投遞成功嗎?
39、微服務下的分布式session該如何管理?
40、阿里二面:filter、interceptor、aspect應如何選擇?很多人中招
41、網際網路架構重要組員CDN,很多高級開發都沒有實操過,來看這裡
42、阿里二面:CDN緩存控制原理,看看能不能難住你
43、SpringCloud Alibaba之Nacos多環境多項目管理
44、SpringCloud Alibaba系列之Nacos配置中心玩法
45、SpringCloud Alibaba之Nacos註冊中心
46、SpringCloud Plus版本之SpringCloud Alibaba
47、SpringCloud Alibaba之Nacos集群、持久化
48、SpringCloud Alibaba之Nacos共享配置、灰度配置
49、SpringCloud Alibaba之Sentinel工作原理
50、SpringCloud Alibaba之Sentinel流控管理
51、SpringCloud Alibaba之Sentinel降級管理
52、SpringCloud Alibaba之Sentinel熱點參數限流
53、SpringCloud Alibaba之Sentinel的API實戰