5

我们计划使用 kubernetes 在容器平台中设置高可用 Jenkins。我们正在考虑设置一个活动主机和另一个处于待机模式的主机。Jenkins 数据量将存储在两个主容器之间共享的全局存储中。

如果活动主服务器不可用,则请求应故障转移到其他主服务器。从站应该只与活动主站通信。

我们如何在 Kubernetes 中以主动/被动模式完成 Jenkins HA 设置。请提供您的建议。

我们希望从下面的链接中实现如下图所示

https://endocode.com/img/blog/jenkins-ha-setup_concept.png

4

3 回答 3

2

有一些积极的考虑来模拟容器的主动/被动设置,但请注意,作为产品功能,这确实不是必须具备的,因此不是内置的。这很好可以作为 OOB 功能集成实现,您必须在其中制作您的应用程序至少要执行以下操作:

  1. 一般leader选举(用于master选择和流量路由,可能是一个sidecar容器来做选举和消息路由)
  2. 使 liveness/readiness 探针检测例程(和故障转移逻辑)修补失败范例下的所有 pod,不再通过任何 pod 选择器方程选择
  3. 如果发生另一个故障转移,您仍然必须确保另一个标签补丁(这次跨越新旧 pod)来更新 pod 元数据,也就是标签

如果您正在寻找最少的东西,那么配置 liveness/readiness 探针可能会为您解决问题。与往常一样,您应该避免使用临时补丁来大规模改变 pod 标签以进行角色选择

https://github.com/kubernetes/kubernetes/issues/45300

于 2019-03-18T10:35:18.757 回答
2

这与 IMHO 在 Kubernetes 中运行应用程序的方式相矛盾。主动/被动是上个世纪的概念。

相反,为 Jenkins 部署配置运行状况检查。如果失败,Kubernetes 将自动终止任务并启动替换(在检测到活动任务不健康后仅几秒钟即可使用)。

于 2019-03-13T10:15:38.253 回答
0

如果您对固执己见的框架感到满意,那么 JenkinsX 可能会帮助您。它默认带有您需要的功能。

于 2019-03-18T09:51:53.140 回答