From ec072bb651f5176aa540ea6577c8f1e36b15d126 Mon Sep 17 00:00:00 2001 From: nicktrn <55853254+nicktrn@users.noreply.github.com> Date: Wed, 5 Feb 2025 16:14:56 +0000 Subject: [PATCH 1/2] add env var to disable pre-pulls --- apps/kubernetes-provider/src/index.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/apps/kubernetes-provider/src/index.ts b/apps/kubernetes-provider/src/index.ts index 3471a914c1..111fe32b12 100644 --- a/apps/kubernetes-provider/src/index.ts +++ b/apps/kubernetes-provider/src/index.ts @@ -37,6 +37,8 @@ const UPTIME_MAX_PENDING_ERRORS = Number(process.env.UPTIME_MAX_PENDING_ERRORS | const POD_EPHEMERAL_STORAGE_SIZE_LIMIT = process.env.POD_EPHEMERAL_STORAGE_SIZE_LIMIT || "10Gi"; const POD_EPHEMERAL_STORAGE_SIZE_REQUEST = process.env.POD_EPHEMERAL_STORAGE_SIZE_REQUEST || "2Gi"; +const PRE_PULL_DISABLED = process.env.PRE_PULL_DISABLED === "true"; + const logger = new SimpleLogger(`[${NODE_NAME}]`); logger.log(`running in ${RUNTIME_ENV} mode`); @@ -301,6 +303,11 @@ class KubernetesTaskOperations implements TaskOperations { } async prePullDeployment(opts: TaskOperationsPrePullDeploymentOptions) { + if (PRE_PULL_DISABLED) { + logger.debug("Pre-pull is disabled, skipping.", { opts }); + return; + } + const metaName = this.#getPrePullContainerName(opts.shortCode); const metaLabels = { From e540aff023315a913da6c834aab2ee80db7f40c4 Mon Sep 17 00:00:00 2001 From: nicktrn <55853254+nicktrn@users.noreply.github.com> Date: Wed, 5 Feb 2025 16:16:09 +0000 Subject: [PATCH 2/2] add label to disable pre-pulls on specific nodes --- apps/kubernetes-provider/src/index.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/apps/kubernetes-provider/src/index.ts b/apps/kubernetes-provider/src/index.ts index 111fe32b12..a5a6cf55f8 100644 --- a/apps/kubernetes-provider/src/index.ts +++ b/apps/kubernetes-provider/src/index.ts @@ -339,6 +339,22 @@ class KubernetesTaskOperations implements TaskOperations { spec: { ...this.#defaultPodSpec, restartPolicy: "Always", + affinity: { + nodeAffinity: { + requiredDuringSchedulingIgnoredDuringExecution: { + nodeSelectorTerms: [ + { + matchExpressions: [ + { + key: "trigger.dev/pre-pull-disabled", + operator: "DoesNotExist", + }, + ], + }, + ], + }, + }, + }, initContainers: [ { name: "prepull",