温馨提示×

debian jenkins如何做集群

小樊
45
2026-10-22 14:47:47
栏目: 智能运维

在 Debian 上搭建 Jenkins 集群(Master + Agent 架构),通常有两种主流方式:

  1. Jenkins 传统 Agent(节点)方式(最常用)
  2. Jenkins Kubernetes 集群方式(云原生)

下面先讲最通用的 Debian 环境做法(Master + Agent),再补充 Kubernetes 方案。


一、Jenkins 集群基本架构

Jenkins Master (Debian)
   |
   |--- Agent1 (Debian / Ubuntu)
   |--- Agent2 (Debian / CentOS / Windows)
  • Master:负责 Web、任务调度
  • Agent:真正执行构建任务

二、Master 节点安装(Debian)

1. 安装 Java

sudo apt update
sudo apt install -y openjdk-17-jdk

2. 安装 Jenkins

sudo wget -O /usr/share/keyrings/jenkins-keyring.asc \
  https://pkg.jenkins.io/debian-stable/jenkins.io.key

echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
  https://pkg.jenkins.io/debian-stable binary/" \
  | sudo tee /etc/apt/sources.list.d/jenkins.list

sudo apt update
sudo apt install -y jenkins

3. 启动 Jenkins

sudo systemctl enable --now jenkins

访问:

http://<master-ip>:8080

三、添加 Agent 节点(Debian)

方式一:SSH Agent(推荐)

1. 在 Agent 机器上

sudo apt install -y openjdk-17-jdk
sudo useradd -m jenkins

2. Master 生成 SSH Key

ssh-keygen -t rsa
ssh-copy-id jenkins@agent-ip

3. Jenkins Web 配置

  • Manage Jenkins → Nodes → New Node
  • 类型:Permanent Agent
  • 配置:
    • Remote root directory:/home/jenkins
    • Launch method:Launch agents via SSH
    • Host:Agent IP
    • Credentials:SSH 用户名 + 私钥

方式二:JNLP Agent(适用无 SSH)

Agent 上执行:

java -jar agent.jar \
  -jnlpUrl http://master:8080/computer/agent1/slave-agent.jnlp \
  -secret xxxxx

可用 systemd 托管。


四、验证集群

创建一个 Freestyle Job:

  • Restrict where this project can be run
  • 填写 Agent 名称

构建任务会在 Agent 上执行。


五、高可用(HA)说明(重点)

⚠ Jenkins 原生不支持 Master HA

常见方案:

  • 单 Master + 多 Agent(最常用)
  • Master 用冷备 + 共享 /var/lib/jenkins
  • 企业级:Jenkins + Kubernetes

六、Kubernetes 集群方式(进阶)

适合大规模 CI:

  • Jenkins Master 跑在 K8s
  • 每个构建动态生成 Pod 作为 Agent

需要:

  • Kubernetes Plugin
  • 配置 Pod Template
  • 构建时自动扩缩容

七、推荐生产架构

Nginx (HTTPS)
   |
Jenkins Master
   |
Agent1 / Agent2 / Agent3

Agent 按用途分:

  • build
  • test
  • deploy

如果你愿意,我可以:

  • 给你 完整 systemd Agent 配置
  • 帮你 用 Docker 跑 Jenkins 集群
  • 或 K8s + Jenkins 动态 Agent 教程

你现在是哪种使用场景?

0 踩