Processing: задачи не запускались из-за выключенного ENABLE_TOLERATION
Симптом: движок брал задачу и падал на её создании —
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 о ней не знает.
This commit is contained in:
parent
6d6703ed2d
commit
5efa1a5fd2
@ -162,24 +162,74 @@ patches:
|
|||||||
# равнозначны, — поэтому поды задач висли бы в Pending с
|
# равнозначны, — поэтому поды задач висли бы в Pending с
|
||||||
# didn't match Pod's node affinity/selector
|
# didn't match Pod's node affinity/selector
|
||||||
# ровно как это было у postgresql (см. postRenderers в его релизе).
|
# ровно как это было у 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
|
- op: test
|
||||||
path: /spec/values/services/backend/envs/67/name
|
path: /spec/values/services/backend/envs/53/name
|
||||||
value: ENABLE_TOLERATION
|
value: TOLERATION_KEY
|
||||||
- op: replace
|
- op: replace
|
||||||
path: /spec/values/services/backend/envs/67/value/_default
|
path: /spec/values/services/backend/envs/53/value/_default
|
||||||
value: "0"
|
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
|
- op: test
|
||||||
path: /spec/values/services/backend/envs/70/name
|
path: /spec/values/services/backend/envs/70/name
|
||||||
value: DEFAULT_NODE_SELECTOR_KEY
|
value: DEFAULT_NODE_SELECTOR_KEY
|
||||||
- op: replace
|
- op: replace
|
||||||
path: /spec/values/services/backend/envs/70/value/_default
|
path: /spec/values/services/backend/envs/70/value/_default
|
||||||
value: ""
|
value: kubernetes.io/os
|
||||||
- op: test
|
- op: test
|
||||||
path: /spec/values/services/backend/envs/71/name
|
path: /spec/values/services/backend/envs/71/name
|
||||||
value: DEFAULT_NODE_SELECTOR_VALUE
|
value: DEFAULT_NODE_SELECTOR_VALUE
|
||||||
- op: replace
|
- op: replace
|
||||||
path: /spec/values/services/backend/envs/71/value/_default
|
path: /spec/values/services/backend/envs/71/value/_default
|
||||||
value: ""
|
value: linux
|
||||||
|
|
||||||
# S3 из Vault, как у api.
|
# S3 из Vault, как у api.
|
||||||
- op: add
|
- op: add
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user