成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Jenkins 在 Kubernetes 上的實踐,你會了嗎?

云計算
Jenkins 是由 Java 編寫的編排引擎,在 Full GC 時會 Stop The World(STW)。在大規模構建時,STW 可能會導致 Jenkins 無法處理新的請求。

[[403811]]

本文轉載自微信公眾號「問其」,作者陳少文。轉載本文請聯系問其公眾號。

 1. 配置較大的 -Xms -Xmx 參數

Jenkins 是由 Java 編寫的編排引擎,在 Full GC 時會 Stop The World(STW)。在大規模構建時,STW 可能會導致 Jenkins 無法處理新的請求。

為了避免頻繁的 STW,同時增大并發量,建議設置較大的堆,-Xms3g -Xmx6g -XX:MaxRAM=6g。具體數值可以根據監控值來設置,Java Full GC 之后,內存占用會陡降。

2. request 不要設置太小

request 設置太小,可能會導致 Jenkins 運行起來之后,節點資源不足,引發驅逐,甚至壓垮節點。

request 應該接近真實值,如果有足夠的機器資源,應該配置親和性,讓 Jenkins 盡可能運行在單獨的機器上。request >= 1.25 * JVM 最大堆內存,limit >= 2 * JVM 最大堆內存。

3. IO 性能不能差

Jenkins 使用磁盤文件存儲數據,每條流水線、每次構建都會占用一個文件目錄,產生大量文件。通常流水線數量有限,但在構建歷史達到 10000+ 級別時,會感受到 IO 對 Jenkins 的影響。

如果使用本地存儲,推薦使用高性能的 SSD。如果是使用網絡存儲,需要高性能的網絡支持,同時加大客戶端的緩存池。

4. 較大的 jenkins_home 的磁盤空間

磁盤滿時,Jenkins 將不能工作,在 Jenkins 后臺會有錯誤提示。

建議對 Jenkins 的工作目錄進行磁盤使用率監控,并配置告警規則。如果沒有監控告警系統,那么建議直接設置一個較大的磁盤空間給 /var/jenkins_home 目錄。因為有一些 Storage Class 不支持動態擴容,當磁盤滿時,就只能手動拷貝了。

5. 使用 Kubernetes plugin 在 Kuberntes 上構建

基于物理機、虛擬機的構建,增加了運維成本、限制了并發的數量。

使用 Kubernetes plugin 插件在 Kubernetes 上進行構建能充分利用云原生易擴展、易維護的優勢,進行大規模的構建。參考: 在 Kubernetes 上動態創建 Jenkins Slave,https://www.chenshaowen.com/blog/creating-jenkins-slave-dynamically-on-kubernetes.html) 。由于構建比較占用資源,為了避免對集群的影響,可以配置親和性,將構建 Pod 集中到指定的節點執行。

6. 使用 CasC 管理 Jenkins 的配置

通過 Jenkins 頁面進行各種構建、安全等配置,不僅繁瑣、不易維護,而且不能夠復用。

使用 CasC 插件,允許用戶將 Jenkins 的配置,通過文本的形式進行描述,還可以放置到 Git 倉庫中進行版本管理。

  1. jenkins: 
  2.   securityRealm: 
  3.     ldap: 
  4.       configurations: 
  5.         - groupMembershipStrategy: 
  6.             fromUserRecord: 
  7.               attributeName: "memberOf" 
  8.           inhibitInferRootDN: false 
  9.           rootDN: "dc=acme,dc=org" 
  10.           server: "ldaps://ldap.acme.org:1636" 
  11.  
  12.   nodes: 
  13.     - permanent: 
  14.         name"static-agent" 
  15.         remoteFS: "/home/jenkins" 
  16.         launcher: 
  17.           jnlp: 
  18.             workDirSettings: 
  19.               disabled: true 
  20.               failIfWorkDirIsMissing: false 
  21.               internalDir: "remoting" 
  22.               workDirPath: "/tmp" 
  23.  
  24.   slaveAgentPort: 50000 
  25.   agentProtocols: 
  26.     - "jnlp2" 

7. 使用 Custom WAR Packager 打包 Jenkins

在部署一套新的 Jenkins 環境時,會需要安裝大量插件,非常影響部署速度,同時插件是否能正常下載也存在不確定性。

Custom WAR Packager 允許用戶將 Jenkins 、配置、插件打包成一個完整的 war 包或者鏡像。這樣無論是開發測試,還是線上部署,都可以很方便的部署,并且環境一致,而用戶只需要寫一個 yaml 文件。

  1. bundle: 
  2.   groupId: com.dev 
  3.   artifactId: "jenkins" 
  4.   description: "Jenkins Custom With Package" 
  5.   vendor: "Jenkins Project" 
  6. buildSettings: 
  7.   docker: 
  8.     base: jenkins/jenkins:2.277.4 
  9.     tag: shaowenchen/jenkins:2.277.4 
  10.     build: true 
  11. war: 
  12.   groupId: org.jenkins-ci.main 
  13.   artifactId: jenkins-war 
  14.   source: 
  15.     version: 2.277.4 
  16. plugins: 
  17.   - groupId: io.jenkins 
  18.     artifactId: configuration-as-code 
  19.     source: 
  20.       version: "1.47" 
  21. libPatches: 
  22.   - groupId: "org.jenkins-ci.main" 
  23.     artifactId: "remoting" 
  24.     source: 
  25.       git: https://github.com/jenkinsci/remoting.git 
  26. systemProperties: { 
  27.      jenkins.model.Jenkins.slaveAgentPort: "50000"
  28.      jenkins.model.Jenkins.slaveAgentPortEnforce: "true"
  29. groovyHooks: 
  30.   - type: "init" 
  31.     id: "initScripts" 
  32.     source:  
  33.       dir: scripts 
  34. casc: 
  35.   - id: "jcasc-config" 
  36.     source: 
  37.       dir: jenkins.yml 

8. Jenkins Shared Libraries

在使用 Groovy 編寫 Pipeline 的過程中,經常會有大量重復代碼。

Jenkins 共享庫提供函數級別的共享,可以在不同流水線之間復用同一套函數邏輯,對于平臺建設、大規模使用場景適用。不僅能加快 Pipeline 編寫,還方便維護、平滑升級。

  1. @Library('utils') import org.foo.Utilities 
  2. def utils = new Utilities(this) 
  3. node { 
  4.   utils.mvn 'clean package' 

9. 參考

  • https://www.jenkins.io/zh/doc/book/pipeline/shared-libraries/
  • https://github.com/jenkinsci/configuration-as-code-plugin
  • https://github.com/jenkinsci/custom-war-packager
  • https://zhuanlan.zhihu.com/p/370241822

 

責任編輯:武曉燕 來源: 問其
相關推薦

2022-05-13 08:17:05

HTTPRESTful架構

2022-04-22 08:10:45

云上數據安全

2024-07-29 10:35:44

KubernetesCSI存儲

2023-12-07 07:23:39

APIsSDKs

2024-01-30 18:29:29

微服務架構Ingress

2022-07-26 08:03:27

Kubernetes節點磁盤

2024-04-09 13:16:21

Rust命名規范

2022-11-03 08:16:33

MySQL·窗口函數

2024-01-08 07:29:57

多集群模型Istio網絡拓撲

2023-04-10 09:31:00

路由技術廠商

2022-07-08 09:27:48

CSSIFC模型

2024-01-26 06:05:16

KuberneteseBPF網絡

2024-10-07 09:12:33

2024-02-02 11:03:11

React數據Ref

2025-01-26 15:31:27

2022-06-21 07:51:15

云原生應用鏈路

2024-01-19 08:25:38

死鎖Java通信

2022-04-01 08:23:17

InputstreString字符串

2024-02-04 00:00:00

Effect數據組件

2023-07-26 13:11:21

ChatGPT平臺工具
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本三级网址 | 九九久久精品视频 | 国产区精品在线观看 | 国产毛片久久久 | 国产成人艳妇aa视频在线 | 美女视频网站久久 | 欧美精品一区二区三区在线播放 | 一级片aaa | 日日夜夜精品免费视频 | 一区二区中文 | 日本韩国电影免费观看 | 亚洲美女在线视频 | 久久99国产精品 | 一级特黄视频 | 欧美成人一区二免费视频软件 | 在线观看毛片网站 | 国产精品不卡 | 国内av在线 | 色约约视频| 干干干操操操 | 日干夜干 | 久久久激情 | 国产精品中文字幕在线播放 | 久久亚洲综合 | 国产美女在线播放 | 国产一二三视频在线观看 | 欧美一级二级视频 | 成年人免费在线视频 | 黄色大片毛片 | 亚洲电影在线播放 | av网站在线免费观看 | 午夜精品导航 | 99久久久久久 | 精品国产1区2区3区 在线国产视频 | 黄视频免费观看 | 久久亚洲综合 | japan25hdxxxx日本 做a的各种视频 | 一区二区三区av夏目彩春 | 91精品国产综合久久婷婷香蕉 | 99福利视频导航 | 欧美久久一区二区 |