专栏首页菲宇kubernetes部署jenkins

kubernetes部署jenkins

部署Jenkins pod, jenkins-rc.yaml:

apiVersion: apps/v1beta1
kind: Deployment
metadata:
    name: jenkins
spec:
    replicas: 1
    strategy: 
    type: RollingUpdate
    rollingUpdate:
        maxSurge: 1
        maxUnavailable: 0
    template:
        metadata:
            labels:
            app: jenkins
        spec:
            imagePullSecrets:
            - name: myregistrykey
            containers:
            - name: jenkins
            image: harbor.test.com/common/jenkins:latest
            imagePullPolicy: IfNotPresent
            ports:
            - containerPort: 8080
              name: web
              protocol: TCP
            - containerPort: 50000
              name: agent
              protocol: TCP
            volumeMounts:
            - name: jenkinshome
            mountPath: /var/jenkins_home
            env:
            - name: JAVA_OPTS
              value: "-Duser.timezone=Asia/Shanghai"
       volumes:
       - name: jenkinshome
         nfs:
         server: 192.168.1.131
         path: "/data/nfs/jenkins"

创建pod,并查看:

  1. [root@k8s-master jenkins]# kubectl get pod
  2. NAME READY STATUS RESTARTS AGE
  3. jenkins-2366461543-cjxjq 0/1 CrashLoopBackOff 6 8m

查看pod日志:

  1. [root@k8s-master jenkins]# kubectl logs jenkins-2366461543-cjxjq
  2. touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission denied
  3. Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?

问题出在pod挂载了nfs共享过来的目录,但没有写的权限。启动一个Jenkins docker查看Jenkins用户:

  1. jenkins@6f9c8a27d26f:~$ cat /etc/passwd | grep jenkins
  2. jenkins:x:1000:1000::/var/jenkins_home:/bin/bash

在NFS 服务器上修改共享目录的所有人:

  1. [root@k8s-nfs data]# cd nfs/
  2. [root@k8s-nfs nfs]# chown 1000 jenkins/

重新创建Jenkins pod,查看状态:

  1. [root@k8s-master jenkins]# kubectl get pod
  2. NAME READY STATUS RESTARTS AGE
  3. jenkins-2366461543-97tjs 1/1 Running 0 4s

创建Service,jenkins-service.yaml:

kind: Service
apiVersion: v1
metadata:
    labels:
    app: jenkins
    name: jenkins
spec:
    ports:
    - port: 8080
      targetPort: 8080
      name: web
      - port: 50000
        targetPort: 50000
      name: agent
  selector:
      app: jenkins

创建Ingress,jenkins-ingress.yaml:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
    name: jenkins
spec:
    tls:
    - hosts:
    - autobuild.test.com
    secretName: jenkins-secret
    rules:
    - host: autobuild.test.com
    http:
    paths:
       - backend:
    serviceName: jenkins
    servicePort: 8080
    path: /

在公网解析域名便可以访问页面。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • jenkins使用方法详解

    Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台。这是一个免费的源代码,可以处理任何类型的构建或持续集成。集成Jenkin...

    菲宇
  • jenkins+ansible+supervisor打造一个web构建发布系统

    一步一步用jenkins,ansible,supervisor打造一个web构建发布系统。

    菲宇
  • 添加Jenkins节点

    在slave机器上添加jenkins用户并设置密码,以备master上的jenkins使用,默认工作目录为/home/Jenkins,Jenkins服务器免秘钥...

    菲宇
  • 【干货】Jenkins 持续集成实现系统自动化构建、测试及部署

    Jenkins 是一款流行的开源持续集成(Continuous Integration)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。本文以 Cen...

    IT技术小咖
  • 持续集成 — 构建接口自动化测试的一种解决方案

    给大家提供一种解决方案的思路,目前大部分同学接触到的jenkins构建自动化应该都是代码和jenkins服务在同一台服务器上面,但是很多时候事与愿违,也许公司的...

    DevOps时代
  • [PHP]算法-二进制中1的个数的PHP实现

    陶士涵
  • C/C++,彩色图像小游戏。

          这里声明,这个游戏是由本人,在大一暑假自作的第二个小游戏,转载请注明原帖地址,谢谢! 所有图片都是我一个人用ps搞出来的,比较简单............

    林冠宏-指尖下的幽灵
  • 自己在总结前人经验下弄的几个opencv封装函数

    第一个是增加对比度的函数,就是变亮。 1 IplImage* EqualizeHistColorImage(IplImage *pImage) 2 { 3...

    林冠宏-指尖下的幽灵
  • python序列化:json,pickl

    什么是序列化,把程序中的对象或者变量,从内存中转换为可存储或可传输的过程称为序列化。在 Python 中,这个过程称为 pickling,在其他语言中也被称为 ...

    py3study

扫码关注云+社区

领取腾讯云代金券