K8S部署jenkins

这篇具有很好参考价值的文章主要介绍了K8S部署jenkins。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

K8S部署jenkins

1、环境配置

  • NFS服务器:1xx.xxx.xxx.229
  • K8Smaster:1xx.xxx.xxx.221
  • k8Snode1: 1xx.xxx.xxx.228 (宿主机)

2、安装NFS

  • 需要将jenkins的配置目录挂载到NFS中,如果没安装可以参考之前的文档。

3、编写jenkins yaml文件

  • 注意:jenkins2.372默认安装jdk11版本,没有mvn和jdk8,如果有需求就需要将宿主机的mvn、jdk、环境变量、都挂载到容器内。
  • jenkins的版本需要固定,否则当容器重启后,jenkins版本会变。
apiVersion: apps/v1
kind: Deployment
metadata:
  name: jenkins
spec:
  replicas: 1
  selector:
    matchLabels:
      name: jenkins 
  template:
    metadata:
      name: jenkins
      labels:
        name: jenkins
    spec:
      serviceAccountName: jenkins
      containers:
        - name: jenkins
          image: jenkins/jenkins:2.372
          ports:
            - containerPort: 8080
            - containerPort: 50000
          resources:
            limits:
              cpu: 1.5
              memory: 2Gi
            requests:
              cpu: 1
              memory: 1Gi
          volumeMounts:
            - name: jenkins-home
              mountPath: /var/jenkins_home

            - name: maven
              mountPath: /usr/local/maven/apache-maven-3.8.5

            - name: jdk
              mountPath: /usr/local/jdk/jdk1.8.0_201

            - name: system
              mountPath: /etc/profile

            - name: warehouse
              mountPath: /root/.m2

      securityContext:
              runAsUser: 0
      volumes:
      - name: jenkins-home
        persistentVolumeClaim:
          claimName: jenkins
          
      - name: maven
        hostPath:
          path: /usr/local/maven/apache-maven-3.8.5
          # 宿主机的maven包地址

      - name: jdk
        hostPath:
          path: /usr/local/jdk/jdk1.8.0_201
          # 宿主机的java包地址

      - name: system
        hostPath:
          path: /etc/profile
          # 宿主机的环境变量

      - name: warehouse
        hostPath:
          path: /root/.m2
          # 宿主机的mvn本地仓库

---
apiVersion: v1
kind: Service
metadata:
  name: jenkins
spec:
  selector:
    name: jenkins
  type: NodePort
  ports:
    - name: http
      port: 80
      targetPort: 8080
      protocol: TCP
      nodePort: 30008
    - name: agent
      port: 50000
      protocol: TCP

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: jenkins
spec:
  storageClassName: "managed-nfs-storage"
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 5Gi

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: jenkins

---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: jenkins
rules:
- apiGroups: [""]
  resources: ["pods","events"]
  verbs: ["create","delete","get","list","patch","update","watch"]
- apiGroups: [""]
  resources: ["pods/exec"]
  verbs: ["create","delete","get","list","patch","update","watch"]
- apiGroups: [""]
  resources: ["pods/log"]
  verbs: ["get","list","watch"]
- apiGroups: [""]
  resources: ["secrets","events"]
  verbs: ["get"]

---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: jenkins
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: jenkins
subjects:
- kind: ServiceAccount
  name: jenkins
kubectl apply -f jenkins.yaml

k8s部署jenkins,jenkins,kubernetes,运维

4、验证mvn、jdk、仓库、环境变量是否都挂载到容器内

[root@k8s-master1 jenkins]# kubectl exec -it jenkins-8654c79996-6bxff -- bash

[root@k8s-master1 jenkins]# source /etc/profile

k8s部署jenkins,jenkins,kubernetes,运维
k8s部署jenkins,jenkins,kubernetes,运维

# 1、检测容器内是否可以上网
root@jenkins-8654c79996-6bxff:~# curl www.baidu.com
#如果能访问到百度代表可以连上网,如果不行,将8.8.8.8加到resolv.conf,在重新试下
root@jenkins-8654c79996-6bxff:~# echo "nameserver 8.8.8.8" >> /etc/resolv.conf

5、更改jenkins插件地址

# 找到nfs服务器,进入挂载目录
[root@k8s-node2 kubernetes]# ll
drwxrwxrwx 16 root   root   4096 Oct 25 17:56 default-jenkins-pvc-eba3b68b-1891-4521-becd-8f0fa6936e9a
drwxrwxrwx  3 root   root   4096 Sep 21 14:11 monitor-grafana-pvc-0a3154e7-e28d-4c5f-b6d7-19829997f209
drwxrwxrwx 27 nobody nobody 4096 Oct 26 09:00 monitor-prometheus-pvc-ee8a8670-d657-47ce-b2f4-1905e1921d76

[root@k8s-node2 default-jenkins-pvc-eba3b68b-1891-4521-becd-8f0fa6936e9a]# cat hudson.model.UpdateCenter.xml 
# 找到url那一行,替换成阿里云插件地址
<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url> https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
  </site>
</sites>

6、安装jenkins

[root@k8s-master1 jenkins]# kubectl get pod,svc -o wide
# 找到pod容器分配在哪台机器和service访问外网的端口。然后在浏览器上访问
NAME                                          READY   STATUS    RESTARTS        AGE   IP           NODE        NOMINATED NODE   READINESS GATES
pod/jenkins-8654c79996-6bxff                  1/1     Running   0               17h   172.17.0.3   k8s-node1   <none>           <none>
pod/nfs-client-provisioner-6b97c8fd96-rz7x9   1/1     Running   5 (5d19h ago)   34d   172.17.0.2   k8s-node1   <none>           <none>

NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                        AGE     SELECTOR
service/jenkins      NodePort    10.0.0.121   <none>        80:30008/TCP,50000:30705/TCP   5d19h   name=jenkins
service/kubernetes   ClusterIP   10.0.0.1     <none>        443/TCP                        35d     <none>

k8s部署jenkins,jenkins,kubernetes,运维


在jenkins首页找到系统配置-----> 插件管理

  • Git
  • Git Parameter:Git参数化构建
  • gogs
  • pipeline:流水线
  • Extended Choice Parameter:扩展选择框参数,支持多选

注意:要拉取gogs仓库的代码,需提前在gogs仓库中创建钩子。

7、制作pipeline

1、在全局配置中配置jdk和mvn地址

k8s部署jenkins,jenkins,kubernetes,运维

k8s部署jenkins,jenkins,kubernetes,运维
k8s部署jenkins,jenkins,kubernetes,运维

2、配置mvn和jdk的环境变量

k8s部署jenkins,jenkins,kubernetes,运维
k8s部署jenkins,jenkins,kubernetes,运维
k8s部署jenkins,jenkins,kubernetes,运维

3、创建pipeline,实现自动打包和编译

注意:pipeline拉取代码是在jenkins中自己生成的

pipeline{
    agent any
    stages {
        stage('1、拉取代码') {
            steps {
                checkout([$class: 'GitSCM', branches: [[name: '*/master']], browser: [$class: 'GogsGit', repoUrl: ''], extensions: [], userRemoteConfigs: [[credentialsId: '73f9c4f6-9224-450c-a07c-f3a7191ddbba', url: 'http://代码仓库地址:端口/xxx/xxx-group-buy.git']]])
            }
        }
        stage('2、打包构建') {
            steps {
                sh """
                ls
                mvn clean package
                """
            }
        }
    }
}

jenkins安装遇到的错误

错误1:jenkins安装时显示以离线文章来源地址https://www.toymoban.com/news/detail-626439.html

  • 解决方案1:复制jenkins地址在后面加上/pluginManager/advanced,找到Update Site或者升级站点。将地址替换掉以下地址,在尝试重启jenkins
  • https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
  • http://updates.jenkins-ci.org/update-center.json
  • 解决方案2:在容器内新增dns 8.8.8.8、114.114.114.114,在尝试重启jenkins

到了这里,关于K8S部署jenkins的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • k8s的jenkins部署java项目到k8s集群cicd持续集成

    k8s1.16.0-k8s的jenkins部署java项目到k8s集群cicd(ci成,cd手动部署的) 注意: 本文档只是实现了ci,cd是通过ci生成的镜像,再手工再k8s-master执行的部署(只因pod部署的jenkins连接k8s的认证不知怎么操作,若jenkins是单独部署在k8s-master机器上,能直接在master执行kubectl命令就没这个问题了

    2024年02月03日
    浏览(65)
  • 【Go】K8s 管理系统项目[Jenkins Pipeline K8s环境–应用部署]

    考虑到实际工作中前后端可能是不同的同学完成,一般Api部分完成后改动会比较小,web部分改动会比较频繁.于是将api和web分了2个pipeline实现 docker目录存放镜像构建相关文件 k8s-plantform-api 存放api部分代码 Jenkinsfile用作pipeline配置 yaml用作生成k8s下k8s-plantform-api相关资源 1.1.1 docker目

    2023年04月08日
    浏览(57)
  • Jenkins构建项目并部署到K8S实践

    本次实践使用gitee上的开源项目悟空CRM9.0进行构建并部署到k8S中 悟空CRM9.0项目简介: 悟空CRM-基于jfinal+vue+ElementUI的前后端分离CRM系统。 项目gitee地址:https://gitee.com/wukongcrm/72crm-java.git 软件 版本 IP 备注 K8S 1.26.x 192.168.1.124 192.168.1.124为K8S集群master01节点IP地址 Harbor 2.6.2 192.168.1.

    2024年02月20日
    浏览(65)
  • 【K8S专题】八、Jenkins 自动打包部署配置

      项目部署有多种方式,从最原始的可运行 jar 包直接部署到 JDK 环境下运行,到将可运行的 jar 包放到 docker 容器中运行,再到现在比较流行的把可运行的 jar 包和 docker 放到 k8s 的 pod 环境中运行。每一种新的部署方式都是对原有部署方式的改进和优化,这里不着重介绍每种

    2024年02月15日
    浏览(39)
  • K8s集群部署最新Jenkins 2.387.1

    概述 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。在Devops时代Jenkins有着不可缺失地位,也体现了Jenkins的亮点,废话不多说,我们进入在k8s环境下安装最新的J

    2024年02月13日
    浏览(54)
  • DevOps搭建(十六)-Jenkins+K8s部署详细步骤

    ​ 要想从Harbor仓库中拉取镜像,首先要往主机和从机的daemon.json文件中添加Harbor的地址信息 \\\"insecure-registries\\\":[\\\"192.168.88.125:80\\\"],别忘了80端口 添加完之后,重启下docker 要拉取镜像,需要Harbor登录进行拉取,到Kuboard控制台对应的命名空间找到 密文 菜单,点击 创建Secret 。 填写

    2024年01月16日
    浏览(48)
  • Jenkins K8S Docker 一键部署SpringCloud微服务

    一键部署springcloud微服务,需要用到 Jenkins K8S Docker等工具,若未安装,请参考《Centos 7 安装K8S》 本文使用jenkins部署,流程如下图 开发者将代码push到git 运维人员通过jenkins部署,自动到git上pull代码 通过maven构建代码 将maven构建后的jar打包成docker镜像 并 push docker镜像到docker

    2024年02月02日
    浏览(39)
  • 云原生Kubernetes: K8S 1.29版本 部署Jenkins

    目录  一、实验 1.环境 2.K8S 1.29版本 部署Jenkins 服务 3.jenkins安装Kubernetes插件 二、问题 1.创建pod失败 2.journalctl如何查看日志信息 2.容器内如何查询jenkins初始密码 3.jenkins离线安装中文包报错 4.jenkins插件报错 (1)主机 表1 主机 主机 架构 版本 IP 备注 master K8S master节点 1.29.0 1

    2024年04月25日
    浏览(54)
  • docker+k8s+jenkins+harbor持续集成自动化部署

    另外一篇文章有讲docker的安装与相关配置,暂时就不讲了 1、关闭防火墙并修改主机名 2、永久禁用swap 用#注释掉swap一行(新版centos已经默认禁用) 3、配置镜像加速 到阿里云获取自己镜像加速地址 4、安装 docker-compose 官网找到下载地址 https://github.com/docker/compose/releases 版本地址

    2024年02月08日
    浏览(64)
  • Jenkins流水线整合k8s实现代码自动集成和部署

    1、安装好k8s集群 这里先要搭建好一个K8s集群,笔者这边就采用使用了一个一主一丛的k8s集群,k8s集群的版本使用1.19.5版本,服务器的配置:2核4G,操作系统: CentOS Linux release 7.9.2009 (Core) 主机名         ip k8smaster 192.168.19.8 k8sworker         192.168.19.9 具体的安装步骤可以

    2024年02月05日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包