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¶
- 
class airflow.executors.kubernetes_executor.ResourceVersion[source]¶
- Singleton for tracking resourceVersion from Kubernetes 
- 
class airflow.executors.kubernetes_executor.KubernetesJobWatcher(namespace: Optional[str], multi_namespace_mode: bool, watcher_queue: 'Queue[KubernetesWatchType]', resource_version: Optional[str], scheduler_job_id: Optional[str], kube_config: Configuration)[source]¶
- Bases: - multiprocessing.Process,- airflow.utils.log.logging_mixin.LoggingMixin- Watches for Kubernetes jobs 
- 
class airflow.executors.kubernetes_executor.AirflowKubernetesScheduler(kube_config: Any, task_queue: 'Queue[KubernetesJobType]', result_queue: 'Queue[KubernetesResultsType]', kube_client: client.CoreV1Api, scheduler_job_id: str)[source]¶
- Bases: - airflow.utils.log.logging_mixin.LoggingMixin- Airflow Scheduler for Kubernetes - 
run_next(self, next_job: KubernetesJobType)[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 
 - 
sync(self)[source]¶
- The sync function checks the status of all currently running kubernetes jobs. If a job is completed, its status is placed in the result queue to be sent back to the scheduler. - Returns
 
 - 
process_watcher_task(self, task: KubernetesWatchType)[source]¶
- Process the task by watcher. 
 
- 
- 
airflow.executors.kubernetes_executor.get_base_pod_from_template(pod_template_file: Optional[str], kube_config: Any) → k8s.V1Pod[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 -- absolute path to a pod_template_file.yaml or None 
- kube_config -- 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 
 
- 
class airflow.executors.kubernetes_executor.KubernetesExecutor[source]¶
- Bases: - airflow.executors.base_executor.BaseExecutor,- airflow.utils.log.logging_mixin.LoggingMixin- 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: TaskInstanceKey, command: CommandType, queue: Optional[str] = None, executor_config: Optional[Any] = None)[source]¶
- Executes task asynchronously 
 - 
adopt_launched_task(self, kube_client: client.CoreV1Api, pod: k8s.V1Pod, pod_ids: Dict[TaskInstanceKey, k8s.V1Pod])[source]¶
- Patch existing pod so that the current KubernetesJobWatcher can monitor it via label selectors - Parameters
- kube_client -- kubernetes client for speaking to kube API 
- pod -- V1Pod spec that we will patch with new label 
- pod_ids -- pod_ids we expect to patch. 
 
 
 
-