您好,登錄后才能下訂單哦!
如何在K8S中安裝jenkins?這個問題可能是我們日常學習或工作經常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家帶來的參考內容,讓我們一起來看看吧!
以 NFS 為存儲卷的示例,將在 NFS 存儲卷上創建 Jenkins 目錄,然后創建 NFS 類型的 PV、PVC。
進入 NFS Server 服務器,然后再其存儲目錄下創建 Jenkins 目錄,并且確保目錄對其它用戶有讀寫權限。
$ mkdir /nfs/data/jenkins
創建 Kubernetes 的 PV、PVC 資源,其中 PV 用于與 NFS 關聯,需要設置 NFS Server 服務器地址和掛載的路徑,修改占用空間大小。而 PVC 則是與應用關聯,方便應用與 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設置 path: /nfs/data/jenkins # 根據上一步的地址來定 server: 192.168.2.11 # 根據nfs server ip實際來設置---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 集群一般情況下都默認開啟了 RBAC 權限,所以需要創建一個角色和服務賬戶,設置角色擁有一定權限,然后將角色與 ServiceAccount 綁定,最后將 ServiceAccount 與 Jenkins 綁定,這樣來賦予 Jenkins 一定的權限,使其能夠執行一些需要權限才能進行的操作。這里為了方便,將 cluster-admin 綁定到 ServiceAccount 來保證 Jenkins 擁有足夠的權限。
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 中部署服務需要部署文件,這里部署 Jenkins 需要創建 Service 與 Deployment 對象,其中兩個對象需要做一些配置,如下:
jenkins-deployment.yaml
apiVersion: v1kind: Servicemetadata: name: jenkins labels: app: jenkinsspec: type: NodePort ports: - name: http port: 8080 #服務端口 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 #設置以ROOT用戶運行容器 privileged: true #擁有特權 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" #設置變量,指定時區和 jenkins slave 執行者設置 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" #設置路徑前綴加上 Jenkins volumeMounts: #設置要掛在的目錄 - name: data mountPath: /var/jenkins_home volumes: - name: data persistentVolumeClaim: claimName: jenkins #設置PVC
參數說明:
-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 時候,它默認生成一段隨機字符串在控制臺日志中,用于安裝時驗證。這里需要獲取它輸出在控制臺中的日志信息,來獲取 Token 字符串。
查看 Jenkins Pod 啟動日志
$ kubectl logs $(kubectl get pods -n mydlqcloud | awk '{print $1}' | grep jenkins) -n mydlqcloud
在日志中可以看到,默認給的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 設置的 NodePort 端口號,訪問 Jenkins UI 界面進行初始化,按以下步驟執行:
進入Jenkins
輸入 Kubernetes 集群地址和上面設置的 Nodeport 方式的端口號 32001,然后輸入上面獲取的 Token 字符串。例如,本人 Kubernetes 集群 IP 為 192.168.2.11 ,所以就可以訪問地址 http://192.168.2.11:32001/jenkins 進入 Jenkins 初始化界面。
感謝各位的閱讀!看完上述內容,你們對如何在K8S中安裝jenkins大概了解了嗎?希望文章內容對大家有所幫助。如果想了解更多相關文章內容,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。