From 5efa1a5fd27bb7493340cfefcffdea011c4b1cb8 Mon Sep 17 00:00:00 2001 From: emelinda Date: Sun, 9 Aug 2026 23:00:31 +0300 Subject: [PATCH] =?UTF-8?q?Processing:=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87?= =?UTF-8?q?=D0=B8=20=D0=BD=D0=B5=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA?= =?UTF-8?q?=D0=B0=D0=BB=D0=B8=D1=81=D1=8C=20=D0=B8=D0=B7-=D0=B7=D0=B0=20?= =?UTF-8?q?=D0=B2=D1=8B=D0=BA=D0=BB=D1=8E=D1=87=D0=B5=D0=BD=D0=BD=D0=BE?= =?UTF-8?q?=D0=B3=D0=BE=20ENABLE=5FTOLERATION?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Симптом: движок брал задачу и падал на её создании — ERROR create k8s job: create k8s job: unknown service Ни одного пода при этом не создавалось. Причина — моя правка. Я выставил ENABLE_TOLERATION=0, чтобы поды задач не получали nodeSelector dedicated=processing на несуществующие выделенные ноды. Но в движке ЭТОТ ЖЕ флаг управляет регистрацией классов ресурсов: if resCfg.EnableToleration { services[HighResources] = Service{...} } (pkg/kube_services/services.go) Поэтому задача с service_request "high-resources" отваливалась не на планировании, а раньше — на разборе, как неизвестный сервис. В логе при этом ни слова про nodeSelector, связь с флагом неочевидна. Вместо выключения флага селектор переведён на метку, которая есть на всех трёх нодах контура, — kubernetes.io/os=linux. Класс сервисов остаётся зарегистрированным, nodeSelector совпадает с любой нодой, toleration на несуществующий taint безвреден. То же сделано для HIGH_MEM и PERSISTENT и для DEFAULT_NODE_SELECTOR_*, которые раньше были пустыми строками. Ресурсы не трогаем: в base это 1 CPU и 1Gi. IGNORE_TAINTS_AND_NODE_SELECTOR, приехавший в base из master, для этого не подходит: в исходниках workflows-engine такой переменной нет вовсе, образ contour_3ef5b462 о ней не знает. --- apps/processing/aero/kustomization.yaml | 62 ++++++++++++++++++++++--- 1 file changed, 56 insertions(+), 6 deletions(-) diff --git a/apps/processing/aero/kustomization.yaml b/apps/processing/aero/kustomization.yaml index a1d0304..c039fe8 100644 --- a/apps/processing/aero/kustomization.yaml +++ b/apps/processing/aero/kustomization.yaml @@ -162,24 +162,74 @@ patches: # равнозначны, — поэтому поды задач висли бы в Pending с # didn't match Pod's node affinity/selector # ровно как это было у postgresql (см. postRenderers в его релизе). + # + # ENABLE_TOLERATION ЗДЕСЬ НЕ ВЫКЛЮЧАТЬ. Сначала я поставил его в "0" — и + # это тихо сломало запуск задач совсем: в движке классы ресурсов + # регистрируются ПОД ЭТИМ ЖЕ ФЛАГОМ, + # if resCfg.EnableToleration { services[HighResources] = ... } + # (pkg/kube_services/services.go), поэтому задача с service_request + # "high-resources" падала не на планировании, а раньше — на разборе: + # ERROR create k8s job: create k8s job: unknown service + # Ни одного пода при этом не создавалось, и в логе не было ни слова про + # nodeSelector, так что связь с этим флагом неочевидна. + # + # Вместо выключения переводим селектор на метку, которая есть на всех + # нодах, — kubernetes.io/os=linux. Класс сервисов остаётся + # зарегистрированным, nodeSelector совпадает с любой нодой, а toleration + # на несуществующий taint безвреден. Запрашиваемые ресурсы трогать не + # надо: в base это 1 CPU и 1Gi. + # + # IGNORE_TAINTS_AND_NODE_SELECTOR (появился в base из master) для этого + # НЕ годится: в исходниках workflows-engine такой переменной нет вовсе, + # образ contour_3ef5b462 о ней не знает. - op: test - path: /spec/values/services/backend/envs/67/name - value: ENABLE_TOLERATION + path: /spec/values/services/backend/envs/53/name + value: TOLERATION_KEY - op: replace - path: /spec/values/services/backend/envs/67/value/_default - value: "0" + path: /spec/values/services/backend/envs/53/value/_default + value: kubernetes.io/os + - op: test + path: /spec/values/services/backend/envs/54/name + value: TOLERATION_VALUE + - op: replace + path: /spec/values/services/backend/envs/54/value/_default + value: linux + - op: test + path: /spec/values/services/backend/envs/55/name + value: TOLERATION_KEY_HIGH_MEM + - op: replace + path: /spec/values/services/backend/envs/55/value/_default + value: kubernetes.io/os + - op: test + path: /spec/values/services/backend/envs/56/name + value: TOLERATION_VALUE_HIGH_MEM + - op: replace + path: /spec/values/services/backend/envs/56/value/_default + value: linux + - op: test + path: /spec/values/services/backend/envs/57/name + value: TOLERATION_KEY_PERSISTENT + - op: replace + path: /spec/values/services/backend/envs/57/value/_default + value: kubernetes.io/os + - op: test + path: /spec/values/services/backend/envs/58/name + value: TOLERATION_VALUE_PERSISTENT + - op: replace + path: /spec/values/services/backend/envs/58/value/_default + value: linux - op: test path: /spec/values/services/backend/envs/70/name value: DEFAULT_NODE_SELECTOR_KEY - op: replace path: /spec/values/services/backend/envs/70/value/_default - value: "" + value: kubernetes.io/os - op: test path: /spec/values/services/backend/envs/71/name value: DEFAULT_NODE_SELECTOR_VALUE - op: replace path: /spec/values/services/backend/envs/71/value/_default - value: "" + value: linux # S3 из Vault, как у api. - op: add