温馨提示×

温馨提示×

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

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

jenkins如何对接k8s

发布时间:2026-10-22 15:46:50 来源:亿速云 阅读:90 作者:小樊 栏目:编程语言

Jenkins 对接 Kubernetes(K8s)通常有两种主要场景,先说清楚你大概率想知道的是哪一种:

  1. Jenkins 动态创建 K8s Pod 作为构建节点(最常用)
    → Jenkins Master 在 K8s 中运行,构建任务下发到临时 Pod 中执行(Jenkins Kubernetes Plugin)
  2. Jenkins 向 K8s 部署应用(CD 阶段)
    → Jenkins 通过 kubectl / helm / argocd 等方式操作 K8s 集群

下面按最常见方案一步步讲。


一、Jenkins 使用 K8s 作为构建节点(动态 Agent)

1. 前提条件

  • 一个可用的 Kubernetes 集群
  • Jenkins 已部署(在 K8s 内或能访问 K8s)
  • 有 kubeconfig 或 ServiceAccount 权限

2. 安装 Jenkins Kubernetes Plugin

Jenkins 插件管理器中安装:

Kubernetes Plugin

(通常叫 kubernetes)


3. 配置 Kubernetes Cloud

路径:

Manage Jenkins → Manage Nodes and Clouds → Configure Clouds → Add a new cloud → Kubernetes

关键配置项:

  • Kubernetes URL
    • 在 K8s 内部:
      https://kubernetes.default.svc
      
    • 外部:你的 apiserver 地址
  • Kubernetes Namespace
    • 例如:jenkins
  • Credentials
    • 使用 K8s ServiceAccount 的 token
  • Jenkins URL
    http://jenkins.default.svc:8080
    

4. 创建 ServiceAccount(示例)

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

获取 token:

kubectl -n jenkins describe secret $(kubectl -n jenkins get secret | grep jenkins | awk '{print $1}')

5. Pipeline 使用 K8s Agent

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

✅ 构建时 Jenkins 会自动创建 Pod,构建完销毁。


二、Jenkins 部署到 Kubernetes(CD)

方式 1:kubectl

stage('Deploy') {
    steps {
        withKubeConfig([credentialsId: 'k8s-config']) {
            sh 'kubectl apply -f deployment.yaml'
        }
    }
}

方式 2:Helm

sh 'helm upgrade --install myapp ./chart'

三、常见问题

  • ❌ Pod 起不来 → 检查 SA 权限 / 镜像拉取策略
  • ❌ Jenkins 连不上 K8s → URL / token / 网络
  • ✅ 推荐:Jenkins 跑在 K8s 里,最省事

如果你愿意,可以告诉我:

  • Jenkins 是否在 K8s 里?
  • 用的是 Helm / YAML / 云厂商 K8s?
  • 是想「构建」还是「部署」?

我可以直接给你一套可复制的 YAML + Jenkinsfile。

向AI问一下细节

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

AI
助
手