You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Jenkins将Docker容器部署至Kubernetes集群?含插件、步骤与示例

从Docker容器到Kubernetes部署:完整流程与Jenkins自动化指南

一、基础手动部署流程(先理解核心逻辑)

前提:K8s集群已就绪,kubectl已配置好访问权限,Docker镜像已推送到公共/私有镜像仓库。

  1. 编写Kubernetes Manifest文件
    核心需要两个文件:Deployment.yaml(定义容器副本、镜像等)和Service.yaml(暴露服务访问)。
  2. 部署到K8s集群
    执行命令:
    kubectl apply -f deployment.yaml
    kubectl apply -f service.yaml
    
  3. 验证部署状态
    • 查看Pod状态:kubectl get pods
    • 查看服务状态:kubectl get services
    • 查看Pod日志:kubectl logs <pod-name>

二、Jenkins自动化部署必备插件

直接安装以下插件(通过Jenkins插件市场搜索安装):

  • Kubernetes Plugin:实现Jenkins与K8s集群的交互
  • Docker Pipeline Plugin:支持Docker镜像的构建、推送操作
  • Credentials Binding Plugin:安全管理镜像仓库、K8s集群的凭证
  • Pipeline Plugin:编写声明式/脚本式流水线
  • Git Plugin:拉取代码仓库中的Dockerfile、Manifest文件(如果需要)

三、Jenkins配置分步指南

1. 配置K8s集群连接

  • 进入Jenkins → 系统管理 → 系统配置 → 找到「Cloud」区域,点击「添加一个云」选择「Kubernetes」
  • 填写K8s API服务器地址(例如https://<k8s-master-ip>:6443)
  • 配置凭证:可选择导入kubeconfig文件,或使用K8s ServiceAccount的令牌,将凭证添加到Jenkins全局凭证中
  • 点击「测试连接」,确认Jenkins能正常访问K8s集群

2. 配置镜像仓库凭证

  • 进入Jenkins → 凭证管理 → 全局凭证 → 「添加凭证」
  • 选择「用户名和密码」类型,填写镜像仓库的账号密码(如Docker Hub、Harbor),设置唯一ID方便流水线调用

3. 全局工具配置(可选)

如果Jenkins节点未预装kubectl或Docker,可在「全局工具配置」中设置自动安装对应工具,避免手动部署的麻烦。

四、核心文件编写示例

1. Dockerfile(以Node.js应用为例)

FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install --production
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]

2. K8s Deployment Manifest(deployment.yaml)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: node-app-deployment
  labels:
    app: node-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: node-app
  template:
    metadata:
      labels:
        app: node-app
    spec:
      containers:
      - name: node-app
        image: your-docker-username/node-app:${BUILD_NUMBER} # 用Jenkins构建号做版本标记
        ports:
        - containerPort: 3000
        resources:
          requests:
            cpu: "100m"
            memory: "128Mi"
          limits:
            cpu: "500m"
            memory: "256Mi"

3. K8s Service Manifest(service.yaml)

apiVersion: v1
kind: Service
metadata:
  name: node-app-service
spec:
  type: NodePort # 根据需求选择LoadBalancer/ClusterIP
  selector:
    app: node-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 3000
      nodePort: 30007 # 可选,指定固定NodePort

五、Jenkins Pipeline可运行示例(声明式)

替换示例中的占位符(如Docker用户名、Git仓库地址、凭证ID)即可直接运行:

pipeline {
  agent any
  environment {
    DOCKER_REGISTRY = "docker.io"
    DOCKER_REPO = "your-docker-username/node-app"
    K8S_MANIFEST_DIR = "./k8s"
    DOCKER_CRED_ID = "dockerhub-creds" // 对应Jenkins中配置的镜像仓库凭证ID
    K8S_CRED_ID = "k8s-cluster-kubeconfig" // 对应Jenkins中配置的K8s凭证ID
  }
  stages {
    stage('拉取代码') {
      steps {
        git url: 'https://github.com/your-username/your-node-app-repo.git', branch: 'main'
      }
    }
    stage('构建并推送Docker镜像') {
      steps {
        script {
          docker.withRegistry("https://${DOCKER_REGISTRY}", "${DOCKER_CRED_ID}") {
            def appImage = docker.build("${DOCKER_REPO}:${BUILD_NUMBER}")
            appImage.push()
            appImage.push("latest") // 同时推送latest标签
          }
        }
      }
    }
    stage('部署到Kubernetes') {
      steps {
        withCredentials([file(credentialsId: "${K8S_CRED_ID}", variable: 'KUBECONFIG')]) {
          sh '''
            export KUBECONFIG=$KUBECONFIG
            # 替换Deployment中的镜像版本
            sed -i "s/your-docker-username\\/node-app:\\${BUILD_NUMBER}/${DOCKER_REPO}:${BUILD_NUMBER}/" ${K8S_MANIFEST_DIR}/deployment.yaml
            # 应用所有Manifest文件
            kubectl apply -f ${K8S_MANIFEST_DIR}/
            # 等待部署完成
            kubectl rollout status deployment/node-app-deployment
          '''
        }
      }
    }
  }
  post {
    success {
      echo "✅ 部署成功!访问地址:http://<your-k8s-node-ip>:30007"
    }
    failure {
      echo "❌ 部署失败,请查看流水线日志排查问题"
    }
  }
}

关键注意事项

  • 确保Jenkins节点能访问K8s API服务器和镜像仓库的网络权限
  • 如果使用私有镜像仓库,需在K8s集群中配置ImagePullSecret,并在Deployment的spec中引用
  • 流水线中的sed命令需根据操作系统调整(如MacOS需用sed -i '')

内容的提问来源于stack exchange,提问作者DHARA SINGH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 04:37:34