一、静态slave

(1)报错

问题出在pod挂载了nfs(宿主机)共享过来的目录,但没有'写的权限'

nfs挂载的解决策略

(2)jenkins中会初始化的脚本

其他方式:操作jenkins的'API去设置端口',注意通过yaml注入的环境变量
作用:在jenkins的master上首先打开这个,目的是'slave来连接master'

备注:不过一般是'5000',这里自定义为30081,在jenkins会自动注入!

具体在yaml中体现在-->'后续补充'

 

(1)创建静态slave

第一步:先生成

 

第二部:yaml配置

'报错':目录权限的问题

chmod -R 777 /data/devops/jenkins/workspace

'方式1':二进制放到这个挂载的目录,然后'挂载到'jenkins的pod里面即可

方式2:'各个工具以pod的形式生成',然后调用即可!

二、动态slave

'效果':当有一个job,k8s自动创建一个pod

(1)安装插件

备注:安装之后进行'重启'

(2)进行配置

'第一步':添加凭据
做的辅助工作:'pod里面通过该文件与api server通信,通过kubectl命令来操作k8s的资源'

(1)生成ca证书

2)客户端的证书

3)客户端的key

'效果':外部客户端通过api访问 api server的认证
'下一步':制作证书

# 生成证书

openssl pkcs12 -export -out cert.pfs -inkey client.key -in client.crt -certfile ca.crt

# 核心是cert.pfs这个文件

添加凭据

'传输折中方式':由于是windows操作的,需要上传到服务器上

最终

(2)系统配置新增一个云

配置ok

备注:没有指定的'其他选项默认'

(3)17:10分

demo地址

pipeline{
    agent{
        kubernetes{
            cloud 'kubernetes'
            yaml '''
---
kind: Pod
apiVersion: v1
metadata:
  labels:
    k8s-app: jenkins-agent-dynamic
  name: jenkins-agent-dynamic
  namespace: devops
spec:
  containers:
    - name: jenkins-agent-dynamic
      image: jenkinsci/jnlp-slave:3.36-1
      imagePullPolicy: IfNotPresent
      resources:
        limits:
          cpu: 1000m
          memory: 2Gi
        requests:
          cpu: 500m
          memory: 512Mi
      volumeMounts:
        - name: jenkinsagent01-workdir
          mountPath: /home/jenkins/workspace
        - name: buildtools
          mountPath: /home/jenkins/buildtools
      env:
        - name: JENKINS_AGENT_WORKDIR
          value: /home/jenkins/workspace

  volumes:
    - name: jenkinsagent01-workdir
      hostPath:
        path: /data/devops/jenkins/workspace
        type: Directory
    - name: buildtools
      hostPath:
        path: /usr/local/buildtools
        type: Directory
'''
        }
    }
        stages{
            stage('test'){
                steps{
                    script{
                      sh 'sleep 15'
                    }
                }
            }
        }
    }

 

备注:'正在创建pod'

理论上:'先创建一个slave节点,然后用该slave节点执行一个任务'

下面报错:'没有这个挂载点造成的'

说明: pipeline根据自己的需要可以适当的修改

出现的报错: '除了自己指定的默认容器,jenkins平台也会启用一个,建议使用jenkins平台提供的'

 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐