企業微服務項目如何進入K8S的全過程

2020-08-29 老顧聊技術

歡迎關注頭條號:老顧聊技術

精品原創技術分享,知識的組裝工

前言

現在很多企業已經進入了docker容器化的部署方式容器化的部署離不開容器編排的工具,現在用的最多的當屬K8S的編排工具。那項目從0開始時,一直進入到k8s中,整體流程是什麼,以及用到什麼工具組件呢?今天老顧就從整體上面來介紹一下。

整體流程

工作流程

1)開發人員提交代碼到git版本倉庫;2)Jenkins人工/定時觸發項目構建;3)jenkins拉取代碼、代碼編碼、打包鏡像、推送到測試環境的鏡像倉庫;4)k8s拉取鏡像產生pod中的容器5)測試環境中測試沒有問題後,把鏡像同步到生產的鏡像倉庫中6)生產環境K8S部署鏡像

git

git現在有的私有倉庫,有兩種選擇gitlab,gogs。

gogs

一開始老顧選擇的gogs,因為比較輕量級,消耗伺服器的資源也很少。但是gogs現有版本中缺少很重要的功能,就是在web界面上面操作拉取分支的功能,這個功能是平常經常用的,但比較可惜的是gogs現在不支持。

gitlab

gitlab功能還是比較強大的,唯一的缺點就是比較耗伺服器資源,最好用4G內存承載,要不然很慢哦

jenkins

jenkins應該是持續集成的唯一選擇了,功能非常強大,強大的插件功能;不同的團隊應用jenkins的方式也不盡相同。

拉取git的插件Git Parameter

動態獲取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

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後,只能用命令方式控制k8s,是很不方便的,所以我們還需要安裝一個界面控制臺,我們這裡選擇強大的kuboard

wget https://github.com/sealstore/dashboard/releases/download/v1.0-1/kuboard.tarsealos install --pkg-url kuboard.tar

到這裡我們完成了k8s的安裝,來看看炫酷的界面

創建Deployment

kuboard的優勢,可以在邏輯上面區分不同的層級,可以方便的讓我們一覽系統架構

ingress安裝

為了讓集群外可以訪問集群裡面的訪問,需要安裝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面試必備:網關異常了怎麼辦?如何做全局異常處理?

4Gateway網關系列(二):SpringCloud Gateway入門實戰,路由規則

5Gateway網關系列開篇:SpringCloud的官方網關Gateway介紹

6API網關在微服務架構中的應用,這一篇就夠了

7學習Lambda表達式看這篇就夠了,不會讓你失望的哦(續篇)

8Lambda用在哪裡?幾種場景?

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實戰

相關焦點

  • springcloud本地開發的微服務如何調用k8s的微服務
    使用的容器網絡與開發者的所在的辦公網絡並不能直接連通,如何在開發環境訪問k8s的服務,就成為我們日常開發繞不開的坎。1、Telepresence簡介Telepresence是一款為Kubernetes微服務框架提供快速本地化開發功能的開源軟體
  • 擁抱雲原生,如何將開源項目用k8s部署?
    k8s以及雲原生相關概念近年來一直比較火熱,阿丸最近搞了個相關項目,小結一下。本文將重點分享阿里開源項目otter適配k8s部署的改造過程,其中的改造過程和技巧應該適用於將大多數開源項目改造到k8s進行部署。
  • 覆蓋全網的阿里微服務架構有多牛:K8S+實戰+筆記+項目教程
    在這 趨勢中,平臺化尤其具有 礎性及戰略性意義,而以 Spring Cloud技術為代表的微服務 是平臺化的代表性技術。為了更好地推廣微服務相關技術的應用,今天小編分享的這份《SpringCloud實戰演練文檔》。本書用簡單明了的方式闡述了微服務開發的基礎知識,詳細介紹了Spring Cloud在項目開發各個階段的操作方法與技巧。
  • 覆蓋全網的阿里微服務架構有多牛:K8S+實戰+筆記+項目教程
    在這 趨勢中,平臺化尤其具有 礎性及戰略性意義,而以 Spring Cloud技術為代表的微服務 是平臺化的代表性技術。為了更好地推廣微服務相關技術的應用,今天小編分享的這份《SpringCloud實戰演練文檔》。本書用簡單明了的方式闡述了微服務開發的基礎知識,詳細介紹了Spring Cloud在項目開發各個階段的操作方法與技巧。
  • 企業IT架構轉型中微服務架構實踐中常見問題總結
    >今天討論下在微服務架構實踐中經常遇到的一些問題的思考,其中有些來源於我們自己的微服務改造項目,有些來源於客戶現場微服務架構實施項目和售前方案溝通。如果從微服務技術平臺的構建和快速開發上來說,當然是你直接選擇SpingCLoud整個開源框架和組件來實現最簡單,而且基本也完全能夠滿足需求。對於日常傳統企業應用來說,性能完全足夠,也不存在說性能無法滿足的情況。畢竟不是所有項目都類似網際網路存在海量數據訪問和大並發下的高性能要求。
  • 企業微服務轉型和DevOps研發運維一體化方案思考
    可以看到微服務,DevOps和容器雲正是我前面文章裡面多次談到的企業面向雲原生解決方案的一個核心內容。由於微服務和DevOps都屬於技術平臺和軟體過程支撐方面的內容,因此要說服企業實施微服務或DevOps過程改進並不是一件容易的事情。對於小一點的企業往往根本就沒有實施微服務和DevOps的潛在需求,而對於大型集團企業往往也自有IT能力自己在構建定製化的平臺。
  • 聽說生鮮領軍企業k8s集群都上雲了,魚會飛了?
    面試官:那你知道k8s嗎?它可以幫助用戶省去應用容器化過程的許多手動部署和擴展操作。也就是說,可以將運行 Linux 容器的多組主機聚集在一起,由 Kubernetes 幫助我們輕鬆高效地管理這些集群。而且,這些集群可跨公共雲、私有雲或混合雲部署主機。
  • k8s三部曲第一章第2節 雲架構&雲原生
    1)雲和k8s是什麼關係 * 雲就是使用容器構件的一套服務集群網絡,雲由很多的大量的容器過程 * k8s就是用來管理雲中的容器2)雲架構 * iaas 基礎設施即服務* 用戶: 租用(購買|分配權限) 雲主機,用戶不需要考慮網絡,DNS,存儲,硬體環境方面的問題* 運營商:提供網絡,存儲,DNS這樣的服務就叫做基礎設置服務
  • 阿里內部超高質量的k8s+Jenkins筆記,技術與實戰齊飛
    主要包含,普通項目構建、流水線構建、多分支流水線構建並將構建結果輔以釘釘通知。全面的學習Jenkins,掌握Jenkins軟體安裝和相關環境配置,掌握Jenkins構建Web項目,SpringCloud微服務項目,及整合Kubernetes完成分布式構建。
  • [Base 上海&廣州] DaoCloud 招聘 Java 工程師/微服務架構師/售前...
    DaoCloud 是企業級雲計算領域的創新領導者。DaoCloud 產品線涵蓋雲原生應用的開發、交付、運維和運營全生命周期,並提供公有雲、私有雲和混合雲等多種交付方式。DaoCloud 核心團隊在容器計算領域具有世界級的技術儲備和社區影響力,公司以網際網路時代下助力企業完成數位化轉型為己任,產品已廣泛被網際網路,汽車,金融,能源,政府等行業用戶採用。
  • 雲原生紅利期,成長型企業如何合理落地微服務?
    雲原生的代表技術包括容器、服務網格、微服務、不可變基礎設施和聲明式API。這些技術能夠構建容錯性好、易於管理和便於觀察的鬆耦合系統。結合可靠的自動化手段,雲原生技術使工程師能夠輕鬆地對系統作出頻繁和可預測的重大變更。今天,小編重點來講講雲原生時代,成長型企業如何該如何更合理地落地微服務。
  • 容器|Docker 如此之好,你為什麼還要用k8s
    我是小小,我們又見面了,今天是本周的第五篇,本篇將會著重講解關於為什麼要使用k8s 前言 容器把所有的應用的語言和框架都打包進入到了容器,使得容器在任何環境都能部署。
  • 容器:Docker 如此之好,你為什麼還要用k8s?
    容器把所有的應用的語言和框架都打包進入到了容器,使得容器在任何環境都能部署。k8s是一個來自google的開源項目,用於統一管理處理容器化的應用。只要能打包進入容器,容器能夠運行,那麼k8s 就一定能運行。
  • 阿里雲內部獨家的K8s+Docker套餐,有內味了
    ,為企業快速上雲提供一個安全可靠的解決方案DockerDocker是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發布到任何流行的Linux機器上,也可以實現虛擬化,容器是完全使用沙箱機制,相互之間不會有任何接口。
  • 對標企業SRE:馬哥教育推出2020微服務課程
    近期,O』Reilly 公布了一份關於企業微服務市場現狀的數據調研。報告顯示,在訪問了全球 1,502 名軟體工程師、系統和技術架構師、工程師以及決策者後,有 77% 的組織反饋採用了微服務,其中 92% 的組織成功使用了微服務。
  • K8s對企業有多重要?聽各國的DevOps研究所大使怎麼說
    9.Jose Adan Ortiz:來自智利聖地牙哥的DevOps研究所大使「企業Kubernetes終於來了,它將帶來業務可擴展性,降低成本,縮短產品上市時間和全渠道的高可用性,以滿足不斷增長的用戶對創新產品和服務的需求。由公共或私有雲提供的企業Kubernetes能夠支持幾乎所有類型的應用程式和技術,從機器學習模型執行到現代後端伺服器。」
  • 我司基於K8s高可用集群架構
    業務全面k8s化,構建以kubernetes為核心的ci/cd流程。在這個過程中需要有三個步驟:測試用例、打包鏡像、更新pod。第一次部署服務在k8s集群環境的時候可能需要:創建namespace、創建imagepullsecret、創建pv(storageclass)、創建deployment(pod controller)、創建svc、創建ingress、等。
  • 傳統企業微服務架構轉型-從問題分析到規劃實施
    本身這些規範如何和敏捷方法論,DevOps和持續集成等融合。規範作用一個是使過程標準化,模板化,其次是加強甲方對整個項目的管控力度。基於微服務架構模式下整體應用架構,技術架構,集成架構,數據架構的規劃是如何的?基於微服務架構下的開發標準,規範體系基於微服務架構下的項目管理,過程管理,運維治理規範體系。
  • .NET社區福利:這本介紹Docker+K8s的書,正是為你量身定製
    這也讓微服務技術得以更好的落地,更加便捷、高效的實現企業生產效率的提升。然而,雖然容器技術越來越流行、雖然網上的資料很多,但是往往多而雜亂,讓人看得眼花繚亂。他從容器剛剛興起就跟進技術,並靈活的將容器技術和Kubernetes(k8s)技術運用到企業的實際項目中,獲得了非常不錯的效果。基於容器技術和k8s技術的完美結合,讓公司的產品開發流程實現了足夠細粒度的服務劃分,然後再配上一鍵發布、所見即所得的持續交付流程,讓他的企業能夠快速適應客戶需求和市場的變化,為企業的業績騰飛帶來了不少助力。
  • 對微服務架構設計實踐中若干問題的探討
    今天討論下在微服務架構實踐中經常遇到的一些問題的思考,其中有些來源於我們自己的微服務改造項目,有些來源於客戶現場微服務架構實施項目和售前方案溝通。如果從微服務技術平臺的構建和快速開發上來說,當然是你直接選擇SpingCLoud整個開源框架和組件來實現最簡單,而且基本也完全能夠滿足需求。對於日常傳統企業應用來說,性能完全足夠,也不存在說性能無法滿足的情況。畢竟不是所有項目都類似網際網路存在海量數據訪問和大並發下的高性能要求。