airflow.executors.kubernetes_executor
¶
KubernetesExecutor
See also
For more information on how the KubernetesExecutor works, take a look at the guide: Kubernetes Executor
Module Contents¶
Classes¶
Singleton for tracking resourceVersion from Kubernetes |
|
Watches for Kubernetes jobs |
|
Airflow Scheduler for Kubernetes |
|
Executor for Kubernetes |
Functions¶
|
Reads either the pod_template_file set in the executor_config or the base pod_template_file |
Attributes¶
- class airflow.executors.kubernetes_executor.ResourceVersion[source]¶
Singleton for tracking resourceVersion from Kubernetes
- class airflow.executors.kubernetes_executor.KubernetesJobWatcher(namespace, multi_namespace_mode, watcher_queue, resource_version, scheduler_job_id, kube_config)[source]¶
Bases:
multiprocessing.Process
,airflow.utils.log.logging_mixin.LoggingMixin
Watches for Kubernetes jobs
- class airflow.executors.kubernetes_executor.AirflowKubernetesScheduler(kube_config, task_queue, result_queue, kube_client, scheduler_job_id)[source]¶
Bases:
airflow.utils.log.logging_mixin.LoggingMixin
Airflow Scheduler for Kubernetes
- run_next(self, next_job)[source]¶
The run_next command will check the task_queue for any un-run jobs. It will then create a unique job-id, launch that job in the cluster, and store relevant info in the current_jobs map so we can track the job's status
- airflow.executors.kubernetes_executor.get_base_pod_from_template(pod_template_file, kube_config)[source]¶
Reads either the pod_template_file set in the executor_config or the base pod_template_file set in the airflow.cfg to craft a "base pod" that will be used by the KubernetesExecutor
- Parameters
pod_template_file (Optional[str]) -- absolute path to a pod_template_file.yaml or None
kube_config (Any) -- The KubeConfig class generated by airflow that contains all kube metadata
- Returns
a V1Pod that can be used as the base pod for k8s tasks
- Return type
kubernetes.client.models.V1Pod
- class airflow.executors.kubernetes_executor.KubernetesExecutor[source]¶
Bases:
airflow.executors.base_executor.BaseExecutor
Executor for Kubernetes
- clear_not_launched_queued_tasks(self, session=None)[source]¶
Tasks can end up in a "Queued" state through either the executor being abruptly shut down (leaving a non-empty task_queue on this executor) or when a rescheduled/deferred operator comes back up for execution (with the same try_number) before the pod of its previous incarnation has been fully removed (we think).
This method checks each of those tasks to see if the corresponding pod is around, and if not, and there's no matching entry in our own task_queue, marks it for re-execution.
- execute_async(self, key, command, queue=None, executor_config=None)[source]¶
Executes task asynchronously
- try_adopt_task_instances(self, tis)[source]¶
Try to adopt running task instances that have been abandoned by a SchedulerJob dying.
Anything that is not adopted will be cleared by the scheduler (and then become eligible for re-scheduling)
- Returns
any TaskInstances that were unable to be adopted
- Return type
list[airflow.models.TaskInstance]
- adopt_launched_task(self, kube_client, pod, pod_ids)[source]¶
Patch existing pod so that the current KubernetesJobWatcher can monitor it via label selectors
- Parameters
kube_client (kubernetes.client.CoreV1Api) -- kubernetes client for speaking to kube API
pod (kubernetes.client.models.V1Pod) -- V1Pod spec that we will patch with new label
pod_ids (Dict[airflow.models.taskinstance.TaskInstanceKey, kubernetes.client.models.V1Pod]) -- pod_ids we expect to patch.