温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

jenkins怎么对接k8s

发布时间:2026-09-11 10:46:21 来源:亿速云 阅读:108 作者:小樊 栏目:编程语言

Jenkins 对接 Kubernetes(K8s)通常有两种主要场景,很多企业是两者结合使用的:

  1. Jenkins 作为 CI,把构建出的镜像部署到 K8s(CD)
  2. Jenkins 本身运行在 K8s 中,并使用 K8s 动态创建 Agent(Pod)来跑 Job(弹性构建)

下面我按最常见、最实用的方式给你讲,从“能跑起来”到“生产可用”。


一、Jenkins 对接 K8s 的三种常见方式

方式 1:Jenkins 在 K8s 外,部署应用到 K8s(最常用)

适合:

  • Jenkins 已在虚拟机/物理机
  • K8s 作为部署目标

核心做法

  • Jenkins 安装 Kubernetes CLI 插件
  • 使用 kubectl / helm 连接 K8s
  • Pipeline 中执行部署命令

示例 Pipeline

pipeline {
    agent any
    stages {
        stage('Deploy to K8s') {
            steps {
                withKubeConfig([credentialsId: 'k8s-kubeconfig']) {
                    sh 'kubectl set image deployment/my-app my-app=my-registry/my-app:latest'
                }
            }
        }
    }
}

✅ 优点:简单
❌ 缺点:Jenkins 本身不弹性


方式 2:Jenkins 使用 K8s 作为动态构建节点(强烈推荐)

适合:

  • 构建任务多
  • 想节省资源
  • 云原生 CI

原理

  • Jenkins Master 在 K8s 外或内
  • 每跑一个 Job,K8s 动态起一个 Pod
  • Job 结束 Pod 自动销毁

需要插件

  • Kubernetes Plugin

Jenkins 配置

  1. Manage Jenkins → Clouds → Add Kubernetes
  2. 填写:
    • Kubernetes API URL
    • Kubeconfig / Service Account
    • Jenkins URL
  3. 配置 Pod Template(镜像、资源、挂载)

示例 Pod Template

jenkins-agent:
  image: jenkins/inbound-agent
  resources:
    requests:
      cpu: 500m
      memory: 512Mi

Pipeline 示例

pipeline {
    agent {
        kubernetes {
            yaml '''
apiVersion: v1
kind: Pod
spec:
  containers:
  - name: build
    image: maven:3.8
    command: ["cat"]
    tty: true
'''
        }
    }
    stages {
        stage('Build') {
            steps {
                container('build') {
                    sh 'mvn clean package'
                }
            }
        }
    }
}

✅ 优点:弹性、资源利用率高
❌ 缺点:配置稍复杂


方式 3:Jenkins 完全部署在 K8s(Helm 安装)

适合:

  • 全新环境
  • 云原生团队

快速安装

helm repo add jenkins https://charts.jenkins.io
helm install jenkins jenkins/jenkins -n jenkins --create-namespace

然后结合方式 2 使用。


二、权限对接(非常关键)

推荐方式:ServiceAccount + RBAC

apiVersion: v1
kind: ServiceAccount
metadata:
  name: jenkins
  namespace: jenkins
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: jenkins-admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: jenkins
  namespace: jenkins

⚠️ 生产环境不要直接给 cluster-admin,按 namespace 授权。


三、典型企业架构(推荐)

Git → Jenkins → 构建镜像 → 推送到 Harbor
                        ↓
                   K8s Deployment

Jenkins:

  • 跑 CI
  • 调用 kubectl / helm / argocd

K8s:

  • 运行服务
  • 接收部署

四、你适合哪种?

场景 推荐方式
Jenkins 已存在 方式 1
构建频繁 方式 2
新项目 方式 3 + 2
生产级 Jenkins + K8s + Helm/ArgoCD

五、如果你愿意,我可以继续帮你

你可以告诉我:

  1. Jenkins 现在在哪(虚拟机 / 容器 / 云)
  2. K8s 是自建还是云(ACK / EKS / TKE)
  3. 想做 部署 还是 动态构建
  4. 有没有用 Helm / ArgoCD

我可以直接给你一套可复制的配置 + Pipeline。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手