最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在?k8s?中部署Jenkins的實踐指南(最新推薦)

 更新時間:2025年03月07日 11:02:51   作者:明明跟你說過  
本文介紹了在Kubernetes(K8s)中部署Jenkins的方法和步驟,包括準(zhǔn)備K8s集群、選擇Jenkins鏡像、創(chuàng)建存儲資源、賬號授權(quán)、部署Jenkins、創(chuàng)建Service以及訪問測試,Jenkins在K8s中的部署可以實現(xiàn)動態(tài)資源管理、提高可靠性和容錯能力、快速響應(yīng)變化和統(tǒng)一環(huán)境等優(yōu)勢

一、引言

1、Jenkins簡介

Jenkins 是一個開源的自動化服務(wù)器,主要用于持續(xù)集成(Continuous Integration, CI)和持續(xù)交付(Continuous Delivery, CD)。它由Sun Microsystems的前員工在2004年左右開發(fā),最初命名為Hudson。后來由于一些商標(biāo)爭議,項目改名為Jenkins,并且迅速成為構(gòu)建、測試和部署軟件項目的流行工具。

Jenkins的主要特點包括:

  • 持續(xù)集成與持續(xù)交付:Jenkins可以自動監(jiān)控版本控制系統(tǒng)中的代碼變更,觸發(fā)構(gòu)建過程,運行測試,并根據(jù)結(jié)果決定是否部署到生產(chǎn)環(huán)境。這有助于快速發(fā)現(xiàn)集成問題并縮短開發(fā)周期。
  • 插件生態(tài)系統(tǒng):Jenkins擁有龐大的插件庫,支持幾乎所有現(xiàn)代軟件開發(fā)中可能用到的工具和技術(shù),比如Git、Maven、Gradle等。
  • 易于擴展:由于Jenkins是基于Java編寫的,因此它非常靈活,用戶可以通過編寫自定義腳本或插件來擴展其功能。
  • 分布式構(gòu)建:Jenkins支持通過“主從”架構(gòu)進行分布式構(gòu)建,允許將構(gòu)建任務(wù)分配給多個節(jié)點,以提高效率和資源利用率。
  • 圖形化界面:Jenkins提供了直觀的Web界面,使得配置和管理CI/CD流程變得簡單。
  • Pipeline即代碼:Jenkins Pipeline是一個特性集,它允許用戶定義其CI/CD流程為代碼的形式(通常使用Groovy語言),這樣可以將其納入版本控制,并與其他團隊成員共享。
  • 安全性:Jenkins提供了一些安全特性和認證機制,確保只有授權(quán)用戶才能執(zhí)行特定的操作。
  • 社區(qū)和支持:作為一個開源項目,Jenkins有一個活躍的社區(qū),提供文檔、論壇討論以及第三方服務(wù)和支持。

2、k8s簡介

Kubernetes(通常簡寫為K8s)是一個開源平臺,用于自動化部署、擴展和管理容器化的應(yīng)用程序。它最初由Google設(shè)計并開發(fā),并于2014年捐贈給了云原生計算基金會(CNCF)。Kubernetes提供了強大的機制來管理分布式系統(tǒng)中的應(yīng)用,使其能夠在物理機或虛擬機集群上運行。

特性

  • 自動化容器編排:自動重啟失敗的容器、替換和重新調(diào)度容器、水平擴展容器等。
  • 自我修復(fù):如果某個節(jié)點故障,Kubernetes會自動將該節(jié)點上的工作負載遷移到其他健康的節(jié)點上。
  • 橫向擴展:通過簡單的命令、用戶界面或者基于CPU使用情況自動調(diào)整應(yīng)用的規(guī)模。
  • 服務(wù)發(fā)現(xiàn)與負載均衡:無需修改代碼即可實現(xiàn)服務(wù)之間的通信,Kubernetes為容器提供了自己的IP地址以及一個DNS名稱,并且可以負載均衡分配到容器上。
  • 自動發(fā)布與回滾:逐步發(fā)布新的版本,同時監(jiān)視應(yīng)用健康狀況,如有問題則自動回滾更改。
  • 密鑰與配置管理:讓您可以輕松地管理和分發(fā)密碼、OAuth令牌和其他敏感數(shù)據(jù),而無需重建鏡像。 

3、什么在k8s中部署Jenkins

在Kubernetes(簡稱K8s)中部署Jenkins,可以帶來許多好處,尤其是對于那些需要高效、可擴展和可靠的持續(xù)集成/持續(xù)交付(CI/CD)流程的企業(yè)或團隊。

1. 動態(tài)資源管理

想象一下,你有一家餐廳,有時候客人很多,有時候客人很少。如果每次客人都很多時,你都需要臨時雇傭更多的服務(wù)員,而當(dāng)客人少時又得解雇他們,這樣不僅麻煩還浪費資源。而在Kubernetes中部署Jenkins就像是有一個智能管理系統(tǒng),它可以根據(jù)當(dāng)前的工作負載自動調(diào)整所需的服務(wù)員數(shù)量(即Jenkins構(gòu)建節(jié)點)。當(dāng)有很多構(gòu)建任務(wù)時,系統(tǒng)會自動增加更多“服務(wù)員”來幫忙;反之,則減少“服務(wù)員”,從而更有效地利用資源。

2. 提高可靠性和容錯能力

如果你的餐廳只有一個廚房,一旦這個廚房出現(xiàn)問題,整個餐廳就無法正常運營了。同樣,在傳統(tǒng)設(shè)置下,如果Jenkins主節(jié)點出現(xiàn)故障,所有的構(gòu)建任務(wù)都會停止。但在Kubernetes環(huán)境中,即使一個節(jié)點出問題,其他健康的節(jié)點可以立即接管工作,確保服務(wù)不間斷。

3. 快速響應(yīng)變化

假設(shè)你的餐廳突然接到一個大型宴會訂單,你需要快速準(zhǔn)備好額外的食物和服務(wù)。有了Kubernetes的幫助,Jenkins可以迅速擴展其處理能力,就像瞬間增加了多個廚房一樣,以應(yīng)對突如其來的大量工作。完成后,還可以快速縮減規(guī)模,節(jié)省成本。

4. 統(tǒng)一環(huán)境

無論是在家中準(zhǔn)備食物還是在商業(yè)廚房里烹飪,保持一致的食譜和做法是非常重要的。將Jenkins部署到Kubernetes上,意味著你可以確保開發(fā)、測試和生產(chǎn)環(huán)境盡可能地相似,避免由于環(huán)境差異導(dǎo)致的問題。

二、準(zhǔn)備工作

1、準(zhǔn)備k8s集群

這里我們用的k8s版本為 1.23.1,大家也可以使用其他的k8s發(fā)行版本,如果還未安裝k8s請參考下面的文章。

《在Centos中搭建 K8s 1.23 集群超詳細講解》

《深度解析:Kubernetes 1.28.2集群安裝過程中的關(guān)鍵步驟》

2、Jenkins官方鏡像版本介紹

官方鏡像的推薦

Jenkins官方推薦使用 jenkinsci/blueocean 這個鏡像。與直接下載Jenkins的鏡像相比,Blue Ocean鏡像提供了更為現(xiàn)代和直觀的用戶界面,使得Jenkins的使用和管理變得更加容易。因此,對于新用戶或者希望簡化Jenkins使用的用戶來說,推薦使用jenkinsci/blueocean鏡像。

鏡像版本標(biāo)簽

Jenkins官方鏡像在Docker Hub上提供了多個版本標(biāo)簽,以便用戶選擇。以下是一些常見的版本標(biāo)簽:

  • latest:表示最新版本的Jenkins,包括最新的功能和安全更新。然而,由于它是最新的版本,可能存在一些未知的問題或不穩(wěn)定因素。
  • lts:表示長期支持版本的Jenkins,通常更穩(wěn)定且經(jīng)過更多的測試。它適合用于生產(chǎn)環(huán)境,因為提供了更多的安全更新和穩(wěn)定性修復(fù)。
  • 具體版本號:例如2.401.1、1.24.1-bcc31d32159f等,表示特定版本的Jenkins。用戶可以根據(jù)自己的需求選擇特定的版本號。

3、Jenkins鏡像準(zhǔn)備

這里我們使用的Jenkins版本為2.410,鏡像我放在個人資源中了,大家也可以自行下載或使用其他的發(fā)行版本。

上傳至worker節(jié)點后,執(zhí)行下面的命令解壓

docker load -i jenkins-2.410.tar.gz

如果k8s版本大于1.23,則執(zhí)行下面的命令

ctr -n=k8s.io images import jenkins2.410

三、在Kubernetes中部署Jenkins

1、準(zhǔn)備存儲資源

我們準(zhǔn)備一個PVC,將Jenkins的數(shù)據(jù)持久化到當(dāng)中,以免pod漂移到其他節(jié)點后,歷史數(shù)據(jù)丟失。

下面簡單介紹下如何創(chuàng)建PVC,更詳細的可以參考《k8s PV與PVC持久化存儲詳解與實際應(yīng)用分享》這篇文章

首先準(zhǔn)備一個NFS共享目錄

yum install nfs-utils -y
systemctl enable nfs --now
mkdir /data/jenkins -p
vim /etc/exports
# 添加下面的內(nèi)容
/data/jenkins *(rw,no_root_squash)
#保存、退出
exportfs -arv

創(chuàng)建一個名稱空間,用于部署Jenkins

kubectl create namespace jenkins-k8s

 編寫pv的yaml文件

apiVersion: v1
kind: PersistentVolume
metadata:
  name: jenkins-k8s-pv
spec:
  capacity:
    storage: 10Gi
  accessModes:
  - ReadWriteMany
  nfs:
    server: 192.168.40.181
    path: /data/jenkins
  • kind: PersistentVolume:定義了這個資源對象的類型是一個PersistentVolume(持久卷)。PersistentVolume是集群中的一段存儲,它獨立于Pod的生命周期而存在。
  • metadata: 開始元數(shù)據(jù)部分,這里包含了資源對象的一些基本信息。
    • name: jenkins-k8s-pv:給這個PersistentVolume指定一個名稱,這里是jenkins-k8s-pv。在Kubernetes集群中,每個資源對象都需要一個唯一的名稱。
  • spec::開始定義PersistentVolume的具體規(guī)格和配置。
    • capacity::定義了這個持久卷的容量。
      • storage: 10Gi:指定了持久卷的存儲大小為10GiB(Gibibytes)。
  • accessModes::描述了持久卷可以被訪問的方式或模式。
  • - ReadWriteMany:表示這個卷可以被多個節(jié)點同時以讀寫方式掛載。其他可能的訪問模式包括ReadWriteOnce(只能由一個節(jié)點以讀寫方式掛載)和ReadOnlyMany(可以被多個節(jié)點以只讀方式掛載)。
  • nfs::指定了這個持久卷使用NFS(網(wǎng)絡(luò)文件系統(tǒng))作為其后端存儲機制。
    • server: 192.168.40.181:指定了NFS服務(wù)器的IP地址,這里是192.168.40.181。
    • path: /data/jenkins:指定了NFS服務(wù)器上共享的路徑,即實際存儲數(shù)據(jù)的位置,在這個例子中是/data/jenkins。

創(chuàng)建PV

kubectl  apply -f pv.yaml

編寫創(chuàng)建PVC的yaml文件

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: jenkins-k8s-pvc
  namespace: jenkins-k8s
spec:
  resources:
    requests:
      storage: 10Gi
  accessModes:
  - ReadWriteMany

 創(chuàng)建PVC

kubectl apply -f  pvc.yaml

2、準(zhǔn)備賬號

創(chuàng)建sa賬號

kubectl create sa jenkins-k8s-sa -n jenkins-k8s

進行RBAC授權(quán)

kubectl create clusterrolebinding jenkins-k8s-sa-cluster -n jenkins-k8s  --clusterrole=cluster-admin --serviceaccount=jenkins-k8s:jenkins-k8s-sa

3、部署Jenkins

準(zhǔn)備yaml文件

kind: Deployment
apiVersion: apps/v1
metadata:
  name: jenkins
  namespace: jenkins-k8s
spec:
  replicas: 1
  selector:
    matchLabels:
      app: jenkins
  template:
    metadata:
      labels:
        app: jenkins
    spec:
      serviceAccount: jenkins-k8s-sa
      containers:
      - name: jenkins
        image:  jenkins/jenkins:2.410
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 8080
          name: web
          protocol: TCP
        - containerPort: 50000
          name: agent
          protocol: TCP
        resources:
          limits:
            cpu: 2000m
            memory: 2Gi
          requests:
            cpu: 500m
            memory: 512Mi
        livenessProbe:
          httpGet:
            path: /login
            port: 8080
          initialDelaySeconds: 60
          timeoutSeconds: 5
          failureThreshold: 12
        readinessProbe:
          httpGet:
            path: /login
            port: 8080
          initialDelaySeconds: 60
          timeoutSeconds: 5
          failureThreshold: 12
        volumeMounts:
        - name: jenkins-volume
          subPath: jenkins-home
          mountPath: /var/jenkins_home
      volumes:
      - name: jenkins-volume
        persistentVolumeClaim:
          claimName: jenkins-k8s-pvc

部署Jenkins

kubectl apply -f jenkins-deployment.yaml

4、創(chuàng)建Service

部署成功后,創(chuàng)建一個service,以供外部訪問

編寫yaml文件

apiVersion: v1
kind: Service
metadata:
  name: jenkins-service
  namespace: jenkins-k8s
  labels:
    app: jenkins
spec:
  selector:
    app: jenkins
  type: NodePort
  ports:
  - name: web
    port: 8080
    targetPort: web
    nodePort: 30089
  - name: agent
    port: 50000
    targetPort: agent

創(chuàng)建service

kubectl apply -f  service.yaml

5、訪問測試

瀏覽器輸入worker節(jié)點的IP+30089端口,如果顯示下面的頁面,證明部署成功

到此這篇關(guān)于在 k8s 中部署Jenkins的實踐指南的文章就介紹到這了,更多相關(guān)k8s部署Jenkins內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 二進制方式安裝?Kubernetes1.18.3版本實現(xiàn)腳本

    二進制方式安裝?Kubernetes1.18.3版本實現(xiàn)腳本

    這篇文章主要為大家介紹了二進制方式安裝Kubernetes1.18.3版本實現(xiàn)腳本,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • kubernetes部署dashboard及應(yīng)用小結(jié)

    kubernetes部署dashboard及應(yīng)用小結(jié)

    Dashboard?是基于網(wǎng)頁的?Kubernetes?用戶界面,可以對?Deployment?實現(xiàn)彈性伸縮、發(fā)起滾動升級、重啟?Pod?或者使用向?qū)?chuàng)建新的應(yīng)用,這篇文章主要介紹了kubernetes部署dashboard,需要的朋友可以參考下
    2024-06-06
  • K8S集群卸載清理的完整步驟流程

    K8S集群卸載清理的完整步驟流程

    在Kubernetes(簡稱K8S)的生命周期中,可能會遇到需要卸載和清理集群的情況,本文將詳細介紹如何安全地卸載K8S集群,并清理所有相關(guān)的資源,需要的可以了解下
    2025-08-08
  • Linux安裝Kubernetes(k8s)超詳細教程

    Linux安裝Kubernetes(k8s)超詳細教程

    Kubernetes是一個輕便的和可擴展的開源平臺,用于管理容器化應(yīng)用和服務(wù),通過Kubernetes能夠進行應(yīng)用的自動化部署和擴縮容,這篇文章主要給大家介紹了關(guān)于Linux安裝Kubernetes(k8s)的相關(guān)資料,需要的朋友可以參考下
    2024-07-07
  • Windows下安裝并使用kubectl查看K8S日志的操作方法

    Windows下安裝并使用kubectl查看K8S日志的操作方法

    本文給大家介紹Windows下安裝并使用kubectl查看K8S日志的操作方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友安康下吧
    2025-06-06
  • 如何使用Kubernetes自定義資源(CRD)詳解

    如何使用Kubernetes自定義資源(CRD)詳解

    自定義資源定義(CRD)是Kubernetes API擴展,可以定義新的對象類型,下面這篇文章主要給大家介紹了關(guān)于如何使用Kubernetes自定義資源(CRD)的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • Kubernetes  Dashboard 配置用戶名密碼方式登錄操作流程

    Kubernetes  Dashboard 配置用戶名密碼方式登錄操作流程

    為了K8s集群安全,默認情況下Dashboard以Token的形式登錄的,那如果我們想以用戶名/密碼的方式登錄該怎么操作呢?其實只需要我們創(chuàng)建用戶并進行 ClusterRoleBinding綁定即可,下面給大家分享Kubernetes  Dashboard 配置用戶名密碼方式登錄操作流程,感興趣的朋友一起看看吧
    2024-06-06
  • K8S使用NFS動態(tài)創(chuàng)建PVC實踐

    K8S使用NFS動態(tài)創(chuàng)建PVC實踐

    本文介紹了兩種使用NFS作為K8S中容器數(shù)據(jù)持久化后端存儲的方法,并在產(chǎn)線環(huán)境中進行了驗證,第一種方法使用了nfs-client-provisioner,第二種方法使用了csi-nfs-driver,兩種方法均通過動態(tài)創(chuàng)建PVC實現(xiàn)數(shù)據(jù)持久化,并驗證了文件的讀寫能力
    2026-03-03
  • K8S部署lnmp項目全過程

    K8S部署lnmp項目全過程

    這篇文章主要介紹了K8S部署lnmp項目全過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Kubernetes(k8s)常用yaml配置和注釋方式

    Kubernetes(k8s)常用yaml配置和注釋方式

    這篇文章主要介紹了Kubernetes(k8s)常用yaml配置和注釋方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-05-05

最新評論

阿拉善右旗| 章丘市| 时尚| 靖西县| 凯里市| 内黄县| 临澧县| 黎城县| 金沙县| 金溪县| 台北县| 云和县| 阆中市| 天祝| 济阳县| 罗平县| 中阳县| 邹城市| 怀仁县| 长海县| 临颍县| 遂平县| 台州市| 建德市| 大洼县| 宁夏| 鱼台县| 全南县| 天台县| 大城县| 涿州市| 边坝县| 荆州市| 诸城市| 石景山区| 华亭县| 普兰县| 新邵县| 长子县| 江川县| 丰县|