【问题标题】:Kubernetes Jenkins Plugin Creating more resources for pending slavesKubernetes Jenkins 插件为待处理的从属创建更多资源
【发布时间】:2019-08-05 22:43:55
【问题描述】:

我有一个关于 Jenkins Kubernetes 插件如何工作的问题。我正在使用 google cloud、jenkins、helm 和 kubernetes 来设置我的环境。我使用这些说明在 kubernetes 上设置 jenkins:

https://cloud.google.com/solutions/jenkins-on-kubernetes-engine-tutorial

在本教程中通过 helm 文件,slave 消耗 500mCPU 和 256Mi 内存,上限为 1 CPU 和 512MI。然后我使用 Kubernetes jenkins 插件,它按照我想象的方式工作。它基本上使用我的 kubernetes 池或节点中的可用资源来创建代理以在 jenkins 上运行我的作业。

我的问题如下,从教程中我的可用池是 2 个节点,每个节点有 2 个 CPU,每个节点 7.5GB。 jenkins 使用其中一些资源来运行服务器等,这意味着我没有所有可用的资源。在我的 Jenkins 服务器中,我将“并发限制”字段更改为 20,我运行了 20 个作业,期望同时创建 20 个执行程序并用于我的作业,但只创建和使用了 8 个。其他人处于离线状态并被暂停。我猜只创建了 8 个,因为我的集群没有足够的资源来创建更多的执行程序?当一些工作完成并且执行者被终止时,执行者就能够运行。所以现在我的问题是,有没有办法添加更多资源(pod、节点或任何可能的东西),以便我达到我的并发限制,如果碰巧我正在运行 20 个作业,那么我的并发限制已达到,我的任何工作都无需等待?我想这样做,因为我的一些执行程序可能不需要大量 CPU 能力(可能像 100mCPU)但可能还有其他可能需要 1CPU现在有了集群配置,我将能够一次运行 MAYBE 1 个作业,这需要很长时间才能执行所有 20 个作业。如果我能够通过创建更多节点或 Pod 来调整集群大小然后删除它们,那么这将使扩展更容易,同时仍然是动态的。有人对如何实现这一目标有任何建议吗?谢谢

【问题讨论】:

    标签: jenkins kubernetes jenkins-plugins jnlp


    【解决方案1】:

    由于您使用的是 Google Cloud,您可以通过edit your existing node pool 启用autoscaling

    GKE 的集群自动扩缩器会根据您要运行的工作负载的需求自动调整集群的大小。启用自动扩展后,如果您创建了没有足够容量运行的新 Pod,GKE 会自动将新节点添加到您的集群;相反,如果集群中的某个节点未充分利用,并且其 Pod 可以在其他节点上运行,则 GKE 可以删除该节点。

    这意味着当您需要时,您可以将更多节点添加到您的节点池中,以满足您工作负载的资源需求。

    或者,如果您的节点中有足够的空间,您可以使用Horizontal Pod Autoscaling 增加 pod 的数量:

    Horizo​​ntal Pod Autoscaler 根据观察到的 CPU 利用率自动扩展复制控制器、部署或副本集中的 pod 数量

    这将根据 pod 资源使用指标创建更多 pod 而不是节点。

    【讨论】:

    • 我在 Kubernetes 设置上对 Jenkins 有相同的场景。 ----------- 用例基本上是如果我在 Jenkins 的所有工人都满了,我想自动扩展(增加奴隶的数量)如果它回来了,我想减少奴隶的数量-- 是否可以扩展 jenkins-slave 吊舱?告诉我怎么做?
    猜你喜欢
    • 2019-02-08
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    • 2020-02-27
    • 2020-07-29
    相关资源
    最近更新 更多