首页 > 其他分享 >jenkins连接k8s

jenkins连接k8s

时间:2024-06-23 14:42:36浏览次数:21  
标签:Slave Kubernetes kubernetes Jenkins jenkins Pod k8s 连接

目录

Jenkins连接k8s集群

  • 默认Jenkins是有2个执行器的,我们也可以通过增加节点的方式去让他拥有更多的执行器,连接固定节点的方法比较简单,按照他的步骤一步步来就好了,这里我们配置连接k8s集群

  • 在我们需要连接k8s集群之前,是需要安装kubernetes插件的,不然是没有那个按钮的

1. Kubernetes插件简介

Kubernetes 插件的目的是能够使用 Kubernetes 配合,实现动态配置 Jenkins 代理(使用 Kubernetes 调度机制来优化负载),在执行 Jenkins Job 构建时,Jenkins Master 会在 kubernetes 中创建一个 Slave Pod 代理来执行任务。

该 Slave Pod 中可以包含多种镜像,例如需要 Maven 编译可以使用 Maven 镜像执行任务。使用 NPM编译则可以使用 NPM镜像。操作 Kubernetes 可以使用 Kubectl 插件镜像。

所有 Job 中所需要的环境及其依赖都交由镜像提供,而不需要手动搭配这些环境。在 Slave Pod 执行完 Job 任务后,该Slave Pod将会自动删除。所以 Kubernetes Plugin 简单用法就是,在 Kubernetes 中启动 Jenkins Slave 代理,让代理执行 Jenkins Job,执行完后释放删除 Slave 释放资源。

2. Kubernetes插件使用

Kubernetes Plugin的配置主要有两部分组成:

  • kubernetes的连接参数:主要用于配置如果连接kubernetes
  • kubernetes的pod模板:调用kubernetes创建jenkins slave使用的pod模板

2.1 kubernetes的连接参数

进入 **系统管理->节点管理->Configure Clouds **中,点击 “Add a new cloud” 选项,选择kubernetes,即可进行kubernetes插件的配置。Kubernetes 插件的基本配置,可以配置 Jenkins 连接 Kubernetes API 地址、凭据、超时时间、容器数量限制等参数,详细配置项说明如下:

  • 名称: 用于该“云”配置的标识,可以配置多个“云”来对应多个 Kubernetes 环境,如:kubernetes
  • Kubernetes 地址: Kubernetes API 的地址,一般在 Kubernetes 集群内部 Kubernetes API 为 https://kubernetes.default.svc.cluster.local,集群外部 Kubernetes API 地址为 https://{K8S IP}:6443,Jenkins 如果也部署在 Kubernetes 集群中的话,可以使用内部地址,否则只能使用外部地址。
  • 禁用 HTTPS 证书检查: 设置连接 Kubernetes API 时不检查 Https 证书,一般默认不勾选即可。
  • Kubernetes 命名空间: 指定在哪个 Kubernetes 命名空间下执行任务,一般默认为空即可。
  • Jenkins 地址: 指定 Jenkins Master 的 URL 地址,用于 Slave 连接 Jenkins 用,如果 Jenkins 配置了前缀也要带上。如http://jenkins.example.com:8080,也可以使用kubernetes的内部地址 http://jenkins-svc.devops.svc.cluster.local:8080
  • Jenkins 通道: jenkins会提供一个独立的端口用于Jenkins slave的连接,该端口默认为50000;如: jenkins-svc.devops.svc.cluster.local:50000

这里的内部地址规则是svc名字.命名空间.svc.cluster.local,一定要注意不要写错了

  • Connection Timeout: 连接 Kubernetes API 超时时间,默认值即可。
  • Read Timeout: 连接 Kubernetes API 读取超时时间,默认值即可。
  • 容器数量: 运行 Slave Pod 的最大数量。为空则不限制,设置为 0 则一个都不能创建,默认是 10 个,一般推荐默认值。
  • Pod Labels: Slave Pod 的 Label 标签设置,默认标签即可。
  • Pod Retention: Pod 保留策略,在 Slave Pod 执行完任务后,是否删除或者保留策略,默认会删除,一般使用默认值即可。
  • 镜像: Pod 模板配置,可以配置 Slave Pod 中多个容器的参数值,非常灵活。

最终的配置图片就是这样的

3. 测试

我们新建一个流水线,然后让他执行一些任务,看他能不能正确启动并连接

将这一段流水线代码复制进去,这里的cloud指的是你刚刚添加的k8s节点的名称,然后保存,点击立即执行

pipeline {
    agent {
        kubernetes {
            cloud 'kubernetes' 
            showRawYaml true  
            yaml """
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: jenkins-agent
  name: jenkins-agent
spec:
  serviceAccountName: jenkins-admin
  containers:
  - name: jnlp
    image: jenkins/inbound-agent
    args: ['\$(JENKINS_SECRET)', '\$(JENKINS_NAME)']
  - name: busybox
    image: busybox
    command:
    - cat
    tty: true
    imagePullPolicy: IfNotPresent
  dnsPolicy: ClusterFirst
  restartPolicy: Never
"""
        }
    }

    stages {
        stage('Hello') {
            steps {
                echo 'Hello World'
            }
        }
    }
}

如果不出问题的话就可以构建成功了

4. 错误原因

  • 当然,有极大可能会失败,因为目前国内的docker不能直接拉取镜像,所以你可以将镜像地址换一下
  • 如果不是因为镜像的原因,正常情况下20秒以内就会执行完,你的流水线一直卡在那个地方的话就可能是你的jenkins的地址写错了,检查一下jenkins的svc然后去修改一下

标签:Slave,Kubernetes,kubernetes,Jenkins,jenkins,Pod,k8s,连接
From: https://www.cnblogs.com/fsdstudy/p/18263444

相关文章

  • MySQL入门学习-连接查询.CROSS JOIN
        CROSSJOIN(交叉连接):返回左表中的所有行,左表中的每一行与右表中的所有行组合,返回的行数等于左表行数乘以右表行数。一、连接查询包括:1.CROSSJOIN(交叉连接):返回左表中的所有行,左表中的每一行与右表中的所有行组合。2.INNERJOIN(内连接):返回左表和右表......
  • MySQL入门学习-连接查询.RIGHT JOIN
        RightsJoin是MySQL中的一种连接查询类型,用于根据右表中的匹配条件,将左表中的数据与右表中的数据进行连接。    一、与其他连接查询相比,RightsJoin具有以下特点:1.连接方向:RightsJoin以右表为主表,左表为从表。连接结果将包含右表中的所有行,而左表......
  • playwright 连接browserless 服务
    playwright是与puppeteer类似的包装,但是playwright实现的周边更加丰富,也是一个很不错的工具,值得使用下,以下是关于playwright连接browserless服务的简单说明环境准备docker-composeversion:"3"services:nginx:image:nginx:alpinevolumes......
  • k8s安装教程
    环境centos7.9安装地址:https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/?spm=a2c6h.25603864.0.0.4a85f5adRRKnVY服务器要求:建议最小硬件配置:2核CPU、2G内存、20G硬盘。服务器可以访问互联网,会联网下载镜像初始化配置:关闭Selinuxsed-i's/enforcing/disable......
  • gbase8s关于客户端和数据库连接的方式和应用建立连接的简单线索分工
    应用和数据库的连接分为本地连接和远程连接,当应用程序和数据库在同一台服务器上为本地连接,不在一台服务器上为远程连接1.本地连接本地连接三种方式:通过共享内存消息系统:应用和数据库在同一台服务器上,应用程序和数据库服务器将挂接在相同的内存段中,应用程序发送消息给数据库......
  • 前端智能合约:连接区块链与用户界面
    引言智能合约是区块链技术中的核心概念,它允许在没有中介的情况下执行可信的交易和协议。然而,要使这些合约对终端用户有用,我们需要一个能够与智能合约交互的前端界面。本文将探讨如何使用Web3.js等工具来构建一个能够与智能合约进行交互的前端应用程序。Web3.js简介Web3.js......
  • 查询Kafka生产者是否连接到Kafka服务
    个人名片......
  • 解决idea项目连接数据库报错:Could not create connection to database server.
    前言idea运行项目时连接数据库,报错Couldnotcreateconnectiontodatabaseserver. 方法1.检查MySQL设置时区:打开运行cmd命令提示符首先连接数据库,输入mysql-hlocalhost-uroot-p,再回车,输入密码连接成功后,输入showvariableslike'%time_zone';,再回车,显示时区配......
  • k8s集群搭建及对一些组件的简单理解(一)
    背景k8s的学习环境(用kubeadm方式搭建),我也搭过几次了,但都有点问题。要么在云服务器上弄,这个的问题是就只有一台轻量服务器,只能搭个单节点的;后来买了一台便宜的,所以就有了两台,但是不在一个zone,一个是广州,一个是成都,内网不通,感觉搭起来很麻烦,还没试过。要么是在本机的虚拟机上搞(vm......
  • AWS ec-2基于SSH连接以及初始化指南
    概述首先我们需要先了解一下ssh的连接原理。ssh大概就是,你的本地计算机生成了一对密钥,一个叫做私钥,一个叫做公钥。然后你把你的公钥上传到远端服务器其中一个user下的.ssh文件夹中。每次ssh连接时,服务器就会看自己的公钥和你计算机的私钥能不能对的上,对的上就可以连接。而刚创......