# Jenkins 的高可用性方案 由于 Jenkins 本身的架构设计并不支持多节点的方式,因此不支持以横向扩展的方式来实现高可用。 依赖于 K8s 的故障转移机制,当 Jenkins Pod 发生故障时,可以通过 K8s 的调度机制将 Pod 调度到其他节点上,从而实现高可用。 因此 Jenkins 的高可用主要考虑得是数据存储层的高可用。 在 DCE 5.0 中,通过使用 HwameiStor 的存储层来实现 Jenkins 的高可用。 HwameiStor 支持使用 DRBD 的方式,可以将一份数据副本同时挂载到多个节点上。 当 Jenkins 所在节点宕机时,通过 K8s 的调度,可以将 Pod 调度到其他节点上,此时 Pod 依旧可以继续使用之前的数据,以此来实现高可用。 !!! tip HwameiStor 基于 DRBD 方案实现了存储层的高可用,因此理论上只需要 CSI 能支持 DRBD 都能实现高可用,如 Linstor 等。 下面将介绍如何基于 HwameiStor 来实现 Jenkins 的高可用。 ## 前置条件 - 安装 HwameiStor 请参阅 。 因为高可用至少需要两个节点,因此 node 数量至少为 2 个。 - 确保系统中有空闲的、干净的磁盘(磁盘中无数据,无分区信息),否则无法被 HwameiStor 使用。 可以通过 `kubectl get ld` 命令来查看系统中的磁盘信息。 ## 安装步骤 1. 确认有空闲的磁盘 ```shell kubectl get ld ``` 输出类似于: ```console localdisk-f24ee676b24652341ed5d61560b7bb16 controller-node-1 /dev/sdb Available Active 51m ``` > 状态为 Available 为新加的硬盘,当添加完硬盘之后就能查到。 2. 确认磁盘类型 ```shell kubectl get ld localdisk-f24ee676b24652341ed5d61560b7bb16 -o yaml | grep type ``` 输出类似于: ```console type: HDD ``` > 注意区分是 HDD 还是 SSD。 3. 创建 LocalDiskClaim,将磁盘加入到 HwameiStor 的管理中。 ```shell > kubectl apply -f - <