您好,登錄后才能下訂單哦!
如何在K8S中安裝jenkins?這個問題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純?nèi)容,讓我們一起來看看吧!
以 NFS 為存儲卷的示例,將在 NFS 存儲卷上創(chuàng)建 Jenkins 目錄,然后創(chuàng)建 NFS 類型的 PV、PVC。
進(jìn)入 NFS Server 服務(wù)器,然后再其存儲目錄下創(chuàng)建 Jenkins 目錄,并且確保目錄對其它用戶有讀寫權(quán)限。
$ mkdir /nfs/data/jenkins
創(chuàng)建 Kubernetes 的 PV、PVC 資源,其中 PV 用于與 NFS 關(guān)聯(lián),需要設(shè)置 NFS Server 服務(wù)器地址和掛載的路徑,修改占用空間大小。而 PVC 則是與應(yīng)用關(guān)聯(lián),方便應(yīng)用與 NFS 綁定掛載,下面是 PV、PVC 的資源對象 yaml 文件。
jenkins-storage.yaml
apiVersion: v1kind: PersistentVolumemetadata: name: jenkins labels: app: jenkinsspec: capacity: storage: 50Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain mountOptions: #NFS掛載選項 - hard - nfsvers=4.1 nfs: #NFS設(shè)置 path: /nfs/data/jenkins # 根據(jù)上一步的地址來定 server: 192.168.2.11 # 根據(jù)nfs server ip實際來設(shè)置---kind: PersistentVolumeClaimapiVersion: v1metadata: name: jenkinsspec: accessModes: - ReadWriteOnce resources: requests: storage: 50Gi #存儲空間大小 selector: matchLabels: app: jenkins
將 PV 與 PVC 部署到 Kubernetes 中:
$ kubectl apply -f jenkins-storage.yaml -n public
Kubernetes 集群一般情況下都默認(rèn)開啟了 RBAC 權(quán)限,所以需要創(chuàng)建一個角色和服務(wù)賬戶,設(shè)置角色擁有一定權(quán)限,然后將角色與 ServiceAccount 綁定,最后將 ServiceAccount 與 Jenkins 綁定,這樣來賦予 Jenkins 一定的權(quán)限,使其能夠執(zhí)行一些需要權(quán)限才能進(jìn)行的操作。這里為了方便,將 cluster-admin 綁定到 ServiceAccount 來保證 Jenkins 擁有足夠的權(quán)限。
jenkins-rbac.yaml
apiVersion: v1kind: ServiceAccountmetadata: name: jenkins-admin #ServiceAccount名 namespace: mydlqcloud #指定namespace,一定要修改成你自己的namespace labels: name: jenkins---kind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata: name: jenkins-admin labels: name: jenkinssubjects: - kind: ServiceAccount name: jenkins-admin namespace: mydlqcloudroleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.io
將 Jenkins 的 RBAC 部署到 Kubernetes 中:
$ kubectl apply -f jenkins-rbac.yaml -n public
在 Kubernetes 中部署服務(wù)需要部署文件,這里部署 Jenkins 需要創(chuàng)建 Service 與 Deployment 對象,其中兩個對象需要做一些配置,如下:
jenkins-deployment.yaml
apiVersion: v1kind: Servicemetadata: name: jenkins labels: app: jenkinsspec: type: NodePort ports: - name: http port: 8080 #服務(wù)端口 targetPort: 8080 nodePort: 32001 #NodePort方式暴露 Jenkins 端口 - name: jnlp port: 50000 #代理端口 targetPort: 50000 nodePort: 32002 selector: app: jenkins---apiVersion: apps/v1kind: Deploymentmetadata: name: jenkins labels: app: jenkinsspec: selector: matchLabels: app: jenkins replicas: 1 template: metadata: labels: app: jenkins spec: serviceAccountName: jenkins-admin containers: - name: jenkins image: jenkins/jenkins:2.204.6 securityContext: runAsUser: 0 #設(shè)置以ROOT用戶運行容器 privileged: true #擁有特權(quán) ports: - name: http containerPort: 8080 - name: jnlp containerPort: 50000 resources: limits: memory: 2Gi cpu: "2000m" requests: memory: 2Gi cpu: "2000m" env: - name: LIMITS_MEMORY valueFrom: resourceFieldRef: resource: limits.memory divisor: 1Mi - name: "JAVA_OPTS" #設(shè)置變量,指定時區(qū)和 jenkins slave 執(zhí)行者設(shè)置 value: " -Xmx$(LIMITS_MEMORY)m -XshowSettings:vm -Dhudson.slaves.NodeProvisioner.initialDelay=0 -Dhudson.slaves.NodeProvisioner.MARGIN=50 -Dhudson.slaves.NodeProvisioner.MARGIN0=0.85 -Duser.timezone=Asia/Shanghai " - name: "JENKINS_OPTS" value: "--prefix=/jenkins" #設(shè)置路徑前綴加上 Jenkins volumeMounts: #設(shè)置要掛在的目錄 - name: data mountPath: /var/jenkins_home volumes: - name: data persistentVolumeClaim: claimName: jenkins #設(shè)置PVC
參數(shù)說明:
-Dhudson.slaves.NodeProvisioner.initialDelay=0 -Dhudson.slaves.NodeProvisioner.MARGIN=50 -Dhudson.slaves.NodeProvisioner.MARGIN0=0.85
有了上面的部署文件后,再將 Jenkins 部署到 Kuberntes 中:
$ kubectl create -f jenkins-deployment.yaml -n mydlqcloud
在安裝 Jenkins 時候,它默認(rèn)生成一段隨機字符串在控制臺日志中,用于安裝時驗證。這里需要獲取它輸出在控制臺中的日志信息,來獲取 Token 字符串。
查看 Jenkins Pod 啟動日志
$ kubectl logs $(kubectl get pods -n mydlqcloud | awk '{print $1}' | grep jenkins) -n mydlqcloud
在日志中可以看到,默認(rèn)給的token為:
************************************************************* Jenkins initial setup is required. An admin user has been created and a password generated. Please use the following password to proceed to installation: 96b19967a2aa4e7ab7d2ea5c6f55db8d This may also be found at: /var/jenkins_home/secrets/initialAdminPassword*************************************************************
輸入 Kubernetes 集群地址和 Jenkins Service 設(shè)置的 NodePort 端口號,訪問 Jenkins UI 界面進(jìn)行初始化,按以下步驟執(zhí)行:
進(jìn)入Jenkins
輸入 Kubernetes 集群地址和上面設(shè)置的 Nodeport 方式的端口號 32001,然后輸入上面獲取的 Token 字符串。例如,本人 Kubernetes 集群 IP 為 192.168.2.11 ,所以就可以訪問地址 http://192.168.2.11:32001/jenkins 進(jìn)入 Jenkins 初始化界面。
感謝各位的閱讀!看完上述內(nèi)容,你們對如何在K8S中安裝jenkins大概了解了嗎?希望文章內(nèi)容對大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。