Airflow KubernetesExecutor / Не удалось принять под
Мы используем исполнитель kubernetes airflow, и по большей части он отлично работает. Хотя обычно модули завершаются и исчезают после выполнения задачи, иногда «что-то» происходит, и эти завершенные модули в конечном итоге остаются навсегда. Или пока мы их вручную не убьем.
Когда я смотрю в наши журналы, я вижу запись за записью, как показано ниже для этих застрявших модулей:
Failed to adopt pod ap127331workitemhistorystreamfilifilisit.5e10fd80bbda40df8e7af5c21da88fea. Reason: (422)
HTTP response body: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"Pod \"ap127331workitemhistorystreamfilifilisit.5e10fd80bbda40df8e7af5c21da88fea\" is invalid: spec: Forbidden: pod updates may not change fields other than `spec.containers[*].image`, `spec.initContainers[*].image`, `spec.activeDeadlineSeconds` or `spec.tolerations` (only additions to existing tolerations)
Кажется, я не могу найти ни рифмы, ни причины, почему одни стручки работают нормально, а другие застревают. Это происходит случайным образом со всеми группами DAG и задачами.
Большое спасибо за любую помощь.
1 ответ
Учетная запись службы, назначенная вашему исполнителю, требует разрешения на исправление. Я обновил роль, прикрепленную к служебной учетной записи, которую выполняют мои модули исполнителей Kubernetes, чтобы добавить разрешение на «исправление»:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: airflow-executor
namespace: airflow2
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: [
"create",
"delete",
"get",
"list",
"patch",
"watch"
]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: airflow-executor
namespace: airflow2
subjects:
- kind: ServiceAccount
name: airflow-sa
apiGroup: ""
roleRef:
kind: Role
name: airflow-executor
apiGroup: rbac.authorization.k8s.io
Это позволило очищать задания воздушного потока, больше не оставляя стручки после завершения задач.