matias blanco opened 2 years ago
|
|||||
matias blanco changed title 2 years ago
|
|||||
How about set up the job executor to only match the preemptible node pool and instruct pipeline jobs to only use that job executor? |
|||||
use nodeSelector or tolerations can be realized, We can specify a set of key-values in pipeline to render job pods.
|
|||||
Adding this is possible. However if the problem itself can be solved with existing feature, I'd prefer not to add extra settings. Also job definition is common to all executors (k8s, docker, shell etc), and I am trying to avoid adding executor specific settings there. |
|||||
Hi guys, yes, i can use node_selector, it's not ideal but can work, but i see another problem, in this case the preemptible node_pool can scale to 0, because it's used to run only scheduled workflow, but if a build it's running, and the node_pool hasn`t node ready, the build fail. I would expect the build can wait a maximum of 5 minutes before a node can handle jobs, in GCP the node autoscaling add nodes to a node_pool in 1 minute |
|||||
Robin Shen changed state to 'Closed' 2 years ago
|
|||||
Please upgrade to build #2937 which will wait for k8s to scale up nodes before failing the build. I also close this issue. Feel free to reopen if you feel toleration is necessary later. |
|||||
Hi Robin, Thank you very much, I update the docker image, and now runs perfect, about the toleration, I think that should be in the jobs executor configuration because it's not related to specific jobs, instead, how builds pods are deployed to the selected node. and the toleration it's very useful, because prevent that other pods (include system pods that aren't daemonset) are sheduled in it, so it can scale to 0 if it isn't in use. this example that comment @zzzhouuu it's that should do the pod tolerate to the taint
I take this opportunity to congratulate all those who contribute to this project! |
|||||
Adding toleration is not complicated. But just want to keep things simple... In case other pods should not be scheduled to certain node pool. Just define another k8s executor and configure those jobs to use that executor instead. Let me know if this approach works at your side. |
|||||
Also even if toleration is added to executor, you will need to define multiple executors to use different tolerations if different jobs need to use different tolerations. |
Type |
Improvement
|
Priority |
Normal
|
Assignee |
Hi,
I thinks that's will be very useful the use of toleration when we configure the Kubernetes job executor, in my case, we have 1 node_pool with all services self-hosted, and another node_pool that are preemptible, so we configure taints in that node_pool to evict that service pods are scheduled in it.
i this case i would like to run the pipelines jobs in the preemptible node_pool, which are more powerful and cheapest than the others.