Kubernetes Jenkins插件为未决的奴隶创建更多资源

时间:2019-03-14 22:02:49

标签: jenkins kubernetes jenkins-plugins jnlp

我对Jenkins Kubernetes插件的工作方式有疑问。我正在使用Google Cloud,Jenkins,Helm和kubernetes来设置我的环境。我按照以下说明在kubernetes上设置jenkins:

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

在本教程中,通过helm文件,从属服务器消耗500mCPU和256Mi内存,最多限制为1个CPU和512MI。然后,我使用Kubernetes jenkins插件,该插件的工作方式与我想象的一样。它基本上使用了我在kubernetes池或节点中的可用资源来创建代理以在jenkins上运行我的作业。

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

1 个答案:

答案 0 :(得分:0)

由于您正在使用Google Cloud,因此可以edit your existing node pool启用autoscaling

  

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

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

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

  

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

这将基于Pod资源使用指标创建更多Pod,而不是节点。