jenkins连接k8s

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: jenkins连接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然后去修改一下

本文来自博客园,作者:FuShudi,转载请注明原文链接:https://www.cnblogs.com/fsdstudy/p/18263444

分类: Euler / HCIE / CICD

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
14天前
|
Kubernetes jenkins 持续交付
在K8S中,Jenkins如何集成K8S集群?
在K8S中,Jenkins如何集成K8S集群?
|
19天前
|
Kubernetes Shell 容器
在k8S中,当一个Pod有多个容器时,如何连接到指定容器?
在k8S中,当一个Pod有多个容器时,如何连接到指定容器?
|
7天前
|
Kubernetes jenkins 持续交付
Jenkins 与 Kubernetes 的集成:实现高效的资源管理和自动化部署
【8月更文第31天】随着微服务架构的普及,Kubernetes 已经成为了容器编排的事实标准。Kubernetes 提供了一种强大的方式来管理容器化的应用程序,而 Jenkins 则是持续集成与持续部署(CI/CD)领域的一个重要工具。将 Jenkins 与 Kubernetes 集成,不仅可以充分利用 Kubernetes 的资源管理能力,还能通过 Jenkins 实现自动化构建、测试和部署,从而提高开发效率和部署速度。本文将详细介绍如何将 Jenkins 集成到 Kubernetes 环境中,并提供具体的代码示例。
33 0
|
9天前
|
Kubernetes jenkins 持续交付
jenkins学习笔记之二十一:k8s部署jenkins及动态slave
jenkins学习笔记之二十一:k8s部署jenkins及动态slave
|
15天前
|
Kubernetes 监控 Shell
在K8S中,我们公司用户反应pod连接数非常多,希望看一下这些连接都是什么信息?什么状态?怎么排查?容器里面没有集成bash环境、网络工具,怎么处理?
在K8S中,我们公司用户反应pod连接数非常多,希望看一下这些连接都是什么信息?什么状态?怎么排查?容器里面没有集成bash环境、网络工具,怎么处理?
|
19天前
|
存储 Kubernetes jenkins
在k8S中,Jenkins发布详细流程是什么?
在k8S中,Jenkins发布详细流程是什么?
|
24天前
|
Kubernetes jenkins 网络安全
Jenkins Pipeline 流水线 - 使用代理节点,Remote SSH 对 K8S 进行升级
Jenkins Pipeline 流水线 - 使用代理节点,Remote SSH 对 K8S 进行升级
23 0
|
24天前
|
Kubernetes jenkins 持续交付
Jenkins + SVN/Git + Maven + Docker + 阿里云镜像 + Kubernetes(K8S)
Jenkins + SVN/Git + Maven + Docker + 阿里云镜像 + Kubernetes(K8S)
51 0
|
7天前
|
jenkins 持续交付 开发者
自动化部署:使用Jenkins和Docker实现持续集成与交付
【8月更文挑战第31天】本文旨在为读者揭示如何通过Jenkins和Docker实现自动化部署,从而加速软件开发流程。我们将从基础概念讲起,逐步深入到实际操作,确保即使是初学者也能跟上步伐。文章将提供详细的步骤说明和代码示例,帮助读者理解并应用这些工具来优化他们的工作流程。
|
7天前
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
23 1
下一篇
DDNS