容器化k8s-流水线发布镜像k8s jenkins协同

1.新建部署job fangliProvider部署测试环境

简单测试参数化构建

流水线脚本:

podTemplate(name: 'jenkins-slave', cloud: 'kubernetes',
  namespace: 'jenkins', label: 'jenkins-slave',volumes: [
    hostPathVolume(mountPath: '/usr/bin/kubectl', hostPath: '/usr/bin/kubectl'),
    hostPathVolume(mountPath: '/var/jenkins_home/', hostPath: '/var/jenkins_home/')
]) 
  {
  node('jenkins-slave') {


    stage('apply update') {
      container('jnlp') {
          sh '''
          kubectl apply -f $deployfile -n testfl
 
          '''
      }
    }

部署成功截图

日志:

Console Output

 
Started by user fangli Running in Durability level: MAX_SURVIVABILITY [Pipeline] Start of Pipeline [Pipeline] podTemplate [Pipeline] { [Pipeline] node Created Pod: kubernetes jenkins/jenkins-slave-m274k-g0chs [Normal][jenkins/jenkins-slave-m274k-g0chs][Scheduled] Successfully assigned jenkins/jenkins-slave-m274k-g0chs to svn Still waiting to schedule task ‘jenkins-slave-m274k-g0chs’ is offline [Normal][jenkins/jenkins-slave-m274k-g0chs][Pulled] Container image "jenkins/inbound-agent:4.3-4" already present on machine [Normal][jenkins/jenkins-slave-m274k-g0chs][Created] Created container jnlp [Normal][jenkins/jenkins-slave-m274k-g0chs][Started] Started container jnlp Created Pod: kubernetes jenkins/jenkins-slave-m274k-s7rgw [Normal][jenkins/jenkins-slave-m274k-s7rgw][Scheduled] Successfully assigned jenkins/jenkins-slave-m274k-s7rgw to server-18 [Normal][jenkins/jenkins-slave-m274k-s7rgw][Pulling] Pulling image "jenkins/inbound-agent:4.3-4" 
Created Pod: kubernetes jenkins/jenkins-slave-m274k-f73q0
[Normal][jenkins/jenkins-slave-m274k-f73q0][Scheduled] Successfully assigned jenkins/jenkins-slave-m274k-f73q0 to svn
[Normal][jenkins/jenkins-slave-m274k-f73q0][Pulled] Container image "jenkins/inbound-agent:4.3-4" already present on machine
[Normal][jenkins/jenkins-slave-m274k-f73q0][Created] Created container jnlp
[Normal][jenkins/jenkins-slave-m274k-f73q0][Started] Started container jnlp
Agent jenkins-slave-m274k-f73q0 is provisioned from template jenkins-slave-m274k
---
apiVersion: "v1"
kind: "Pod"
metadata:
  annotations:
    buildUrl: "http://192.168.10.40:32634/job/fanglitestProvider%E9%83%A8%E7%BD%B2%E6%B5%8B%E8%AF%95%E7%8E%AF%E5%A2%83/4/"
    runUrl: "job/fanglitestProvider%E9%83%A8%E7%BD%B2%E6%B5%8B%E8%AF%95%E7%8E%AF%E5%A2%83/4/"
  labels:
    jenkins: "slave"
    jenkins/label-digest: "5059d2cd0054f9fe75d61f97723d98ab1a42d71a"
    jenkins/label: "jenkins-slave"
  name: "jenkins-slave-m274k-f73q0"
spec:
  containers:
  - env:
    - name: "JENKINS_SECRET"
      value: "********"
    - name: "JENKINS_TUNNEL"
      value: "10.1.243.253:50000"
    - name: "JENKINS_AGENT_NAME"
      value: "jenkins-slave-m274k-f73q0"
    - name: "JENKINS_NAME"
      value: "jenkins-slave-m274k-f73q0"
    - name: "JENKINS_AGENT_WORKDIR"
      value: "/home/jenkins/agent"
    - name: "JENKINS_URL"
      value: "http://192.168.10.40:32634/"
    image: "jenkins/inbound-agent:4.3-4"
    name: "jnlp"
    resources:
      limits: {}
      requests:
        memory: "256Mi"
        cpu: "100m"
    volumeMounts:
    - mountPath: "/usr/bin/kubectl"
      name: "volume-0"
      readOnly: false
    - mountPath: "/var/jenkins_home"
      name: "volume-1"
      readOnly: false
    - mountPath: "/home/jenkins/agent"
      name: "workspace-volume"
      readOnly: false
  nodeSelector:
    kubernetes.io/os: "linux"
  restartPolicy: "Never"
  volumes:
  - hostPath:
      path: "/usr/bin/kubectl"
    name: "volume-0"
  - hostPath:
      path: "/var/jenkins_home/"
    name: "volume-1"
  - emptyDir:
      medium: ""
    name: "workspace-volume"

Running on jenkins-slave-m274k-f73q0 in /home/jenkins/agent/workspace/fanglitestProvider部署测试环境
[Pipeline] {
[Pipeline] stage
[Pipeline] { (apply update)
[Pipeline] container
[Pipeline] {
[Pipeline] sh

2.错误的解决

a. 云环境cloud: 'kubernetes' 不存在

解决:配置云环境,没插件下载k8s对应插件

系统管理》节点管理》》configure clouds》》add a new Cloud

因为jenkins已经是k8s管理的容器,默认连接测试通常会成功。

 

b.  运行流水线pod模板 k8s会自动创建 jenkins从节点slave(也是一个pod)去跑这个job.

从节点运行不成功。5000端口不可达

解决:

   1. jenkins-service.xml  配置5000端口

apiVersion: v1
kind: Service
metadata:
  name: jenkins
spec:
  type: NodePort
  ports:
    - name: web
      port: 8080
      targetPort: web
      nodePort: 32634
    - name: agent
      port: 50000
      targetPort: agent
  selector:
    app: jenkins

2. 部署文件配置5000容器端口 name和jenkins-service.xml对应

3.最重要的一点,jenkins配置通道地址 IP+端口 前面不要有http之类

这个地址可在 系统管理》》系统信息    中找到

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值