jenkins基於k8s動態增減jnlp-slave節點進行構建
阿新 • • 發佈:2018-12-26
1.配置jenkins-master
1.開啟jenkins系統管理–>全域性安全配置–>代理
這裡指定的埠是jnlp-slave連結master使用的埠
注意:
如果jenkins-master是在容器中啟動的一定要記得將這個埠暴露到外部,不然jenkins-master會不知道slave是否已經啟動,會反覆去建立pod只到超過重試次數。
2.開啟jenkins系統管理–>系統設定–>新增一個雲–>Kubernetes
3.也可以自定義映象,這裡使用的是maven構建映象
4.掛載目錄[‘/var/run/docker.sock’,’/usr/bin/docker’,’/root/.m2’]
5.新建一個 pipeine 任務,下面是流水線指令碼
/*
1. cloud欄位指定系統設定裡配置的Kubernetes雲的名字,本例用的是:k8s_115
2. label和node中的欄位是pod模板中的label值,本例用的是:jenkins-jnlp-slave
*/
def label = "maven-tmp"
podTemplate(label: label, cloud: 'k8s_115') {
node(label){
stage('checkout git') {
checkout([$class: 'GitSCM' , branches: [[name: '*/master']], userRemoteConfigs: [[credentialsId: '69c0dbf0-f786-4aa0-975a-76528f10de8b', url: 'http://127.0.0.1/xxx/devops_test.git']]])
}
container('maven') {
stage('maven build') {
sh 'cd WebTest && mvn clean package'
}
stage('docker build' ) {
sh 'cd WebTest && mvn docker:build'
}
}
}
}
4.開始構建
遇到的錯誤
如果提示Jenkins doesn’t have label jenkins-jnlp-slave
1.因為slave節點無法連結到jenkins節點開放埠50000導致
2.因為slave映象中slave啟動失敗導致的
3.因為jenkins-master和k8s通訊有延時導致超時jenkins會反覆建立pod
4.因為slave pod啟動失敗
5.因為pipeline中指定的label與配置中的不一致導致