1. 程式人生 > >jenkins基於k8s動態增減jnlp-slave節點進行構建

jenkins基於k8s動態增減jnlp-slave節點進行構建

1.配置jenkins-master

1.開啟jenkins系統管理–>全域性安全配置–>代理
代理
這裡指定的埠是jnlp-slave連結master使用的埠
注意:如果jenkins-master是在容器中啟動的一定要記得將這個埠暴露到外部,不然jenkins-master會不知道slave是否已經啟動,會反覆去建立pod只到超過重試次數。

2.開啟jenkins系統管理–>系統設定–>新增一個雲–>Kubernetes
Kubernetes
3.也可以自定義映象,這裡使用的是maven構建映象
podTmp
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
如果提示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與配置中的不一致導致