嘗試下K8s + jenkins的組合,非常方便。在這里記錄一下:
kubernetes版本:
1.10 +
deployment.yaml
apiVersion: v1
kind: Service
metadata:
name: jenkins
labels:
app: jenkins
spec:
type: NodePort
ports:
- port: 8080
name: jenkins-web
- port: 8081
name: jnlp
selector:
app: jenkins
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: jenkins
spec:
serviceName: "jenkins"
replicas: 1
selector:
matchLabels:
app: jenkins
template:
metadata:
labels:
app: jenkins
spec:
containers:
- name: nginx
image: jenkins/jenkins:lts-alpine
ports:
- containerPort: 8080
name: jenkins-web
- containerPort: 8081
name: jenkins-jnlp
volumeMounts:
- name: jenkins-data
mountPath: /var/jenkins_home
volumeClaimTemplates:
- metadata:
name: jenkins-data
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 1Gi`
執行kubectl create xxx.
然后就是正常的等待jenkins配置(注意,jenkins 2.60 的dockerhub版本並不支持kubernetes插件安裝,如果不用插件用人肉配置也ok,但鑒於jenkins 2.153版本已經出現且支持kubernetes的插件安裝,故采用了jenkins新版)
當然,為了體現出kubenetes的優勢,請把executor number設為0.
其次kubernetes配置(如果是本機kubenetes,插件會自動識別並且填好所有東西,如果是非本機的集群,就需要人肉補充了):


大功告成!用3個job測試一下:
job1,job2,job3:

在executor為0的情況下,會創建3個container來跑這3個job,跑完回收~
效果圖:
executor為0,但3個job在執行:
