Kubernetes實現Master-Slave分布式構建方案(一)


 Jenkins的Master-Slave分布式構建

什么是Master-Slave分布式構建

Jenkins 的Master-Slave分布式構建,就是通過將構建過程分配到從屬Slave節點上,從而減輕Master節點的壓力,而且可以同時構建多個,有點類似負載均衡的概念。
如何實現Master-Slave分布式構建
1)開啟代理程序的TCP端口
Manage Jenkins -> Configure Global Security

2)新建節點
Manage Jenkins—Manage Nodes—新建節點

 

 

 

 

 

 有兩種在 Slave節點連接Master節點的方法

我們選擇第二種:
2)安裝和配置節點
下載agent.jar,並上傳到Slave節點,然后執行頁面提示的命令:

java -jar agent.jar -jnlpUrl http://192.168.66.101:8888/computer/slave1/slave-
agent.jnlp -secret
f2ecbb99e0c81331e8b7a7917a94d478f39cb9763fc6c66d9a9741c61f9ae6d6 -workDir
"/root/jenkins"

刷新頁面

 

 

3)測試節點是否可用
自由風格和Maven風格的項目:

 

 流水線風格的項目:

ode('slave1') {
 stage('check out') {
    checkout([$class: 'GitSCM', branches: [[name: '*/master']],
doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [],
userRemoteConfigs: [[credentialsId: '68f2087f-a034-4d39-a9ff-1f776dd3dfa8', url:
'git@192.168.66.100:itheima_group/tensquare_back_cluster.git']]])
 }
}

傳統Jenkins的Master-Slave方案的缺陷

  1. Master 節點發生單點故障時,整個流程都不可用了
  2. 每個 Slave節點的配置環境不一樣,來完成不同語言的編譯打包等操作,但是這些差異化的配置導致管理起來非常不方便,維護起來也是比較費勁
  3. 資源分配不均衡,有的 Slave節點要運行的job出現排隊等待,而有的Slave節點處於空閑狀態
  4. 資源浪費,每台 Slave節點可能是實體機或者VM,當Slave節點處於空閑狀態時,也不會完全釋放掉資源

以上種種問題,我們可以引入Kubernates來解決!

 Kubernates簡介

Kubernetes (簡稱,K8S)是Google開源的容器集群管理系統,在Docker技術的基礎上,為容器化的
應用提供部署運行、資源調度、服務發現和動態伸縮等一系列完整功能,提高了大規模容器集群管理的便捷性。 其主要功能如下:

  1. 使用Docker對應用程序包裝(package)、實例化(instantiate)、運行(run)。
  2. 以集群的方式運行、管理跨機器的容器。以集群的方式運行、管理跨機器的容器。
  3. 解決 Docker跨機器容器之間的通訊問題。解決Docker跨機器容器之間的通訊問題。
  4. Kubernetes 的自我修復機制使得容器集群總是運行在用戶期望的狀態。

 

 

 

 

 

大致工作流程:手動 /自動構建 -> Jenkins 調度 K8S API ->動態生成 Jenkins Slave pod -> Slave pod
拉取 Git 代碼/編譯/打包鏡像 ->推送到鏡像倉庫 Harbor -> Slave 工作完成,Pod 自動銷毀 ->部署
到測試或生產 Kubernetes平台。(完全自動化,無需人工干預)

Kubernates+Docker+Jenkins持續集成方案好處
服務高可用 :當 Jenkins Master 出現故障時,Kubernetes 會自動創建一個新的 Jenkins Master容器,並且將 Volume 分配給新創建的容器,保證數據不丟失,從而達到集群服務高可用。

動態伸縮,合理使用資源 :每次運行 Job 時,會自動創建一個 Jenkins Slave,Job 完成后,Slave自動注銷並刪除容器,資源自動釋放,而且 Kubernetes 會根據每個資源的使用情況,動態分配
Slave 到空閑的節點上創建,降低出現因某節點資源利用率高,還排隊等待在該節點的情況。

擴展性好:當 Kubernetes 集群的資源嚴重不足而導致 Job 排隊等待時,可以很容易的添加一個Kubernetes Node 到集群中,從而實現擴展。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM