NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1900 most downloaded on PyPI
Provider package apache-airflow-providers-cncf-kubernetes for Apache Airflow
Last release 2 days ago
02 Oct 2026
Ships on a steady schedule
a new release about every 2 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
6 versions withdrawn
withdrawn after publishing
6 years old
237 releases · first in 2020
Nothing published for this version
Nothing published for this version
- Add KubernetesPodExecOperator for existing Kubernetes Pods
Release Date: 2026-09-14
Add KubernetesPodExecOperator for existing Kubernetes Pods (#71244)
Fix XCom sidecar helper mutating the caller's pod volumes (#72522)
Fix KubernetesPodOperator XCom loss when container_logs is a string (#72502)
Refactor validate_key to raise ValueError instead of AirflowException (#68890)
Use common.compat.sdk for the remaining provider timezone imports (#71209)
Remove stale is_async docstring param from await_pod_start (#72261)
One column per quarter.
Add KubernetesPodExecOperator for existing Kubernetes Pods (#71244)
Fix XCom sidecar helper mutating the caller's pod volumes (#72522)
Fix KubernetesPodOperator XCom loss when container_logs is a string (#72502)
Refactor validate_key to raise ValueError instead of AirflowException (#68890)
Use common.compat.sdk for the remaining provider timezone imports (#71209)
Remove stale is_async docstring param from await_pod_start (#72261)
Nothing published for this version
- Make KubernetesPodOperator durable execution inert below Airflow 3.3
Release Date: 2026-08-23
Make KubernetesPodOperator durable execution inert below Airflow 3.3 (#71492)
Coerce explicit None _request_timeout in async/sync k8s API clients (#69611)
Add missing argument docs for pod methods (#71217)
Make KubernetesPodOperator durable execution inert below Airflow 3.3 (#71492)
Coerce explicit None _request_timeout in async/sync k8s API clients (#69611)
Add missing argument docs for pod methods (#71217)
Nothing published for this version
airflow kubernetes cleanup-pods now takes --min-completed-minutes , which defaults to 1 . Terminal pods are therefore no longer deleted immediately; p
Release Date: 2026-08-10
Note
airflow kubernetes cleanup-pods now takes --min-completed-minutes , which defaults to 1 . Terminal pods are therefore no longer deleted immediately; pass --min-completed-minutes 0 to restore the previous behavior. The delay closes a race where cleanup removed a pod before await_pod_completion had read its final state.
Add '--min-completed-minutes' to 'cleanup-pods' to prevent KubernetesPodOperator race condition (#70595)
Add opt-in concurrent pod creation to KubernetesExecutor (#68480)
Prevent deferrable KubernetesPodOperator log parsing from blocking the triggerer event loop (#69661)
Fix KubernetesPodOperator dry_run requiring live Kubernetes API client (#70234)
Build KubernetesInstallKueueOperator manifest URL after rendering (#70335)
Mark KubernetesPodOperator and AgentOperator as durable capable (#70289)
Validate KubernetesResourceBaseOperator yaml_conf after rendering (#70337)
Document Kubernetes RBAC permissions (#68716)
Documenting effect if task state store cleanup for KubernetesPodOperator (#70722)
Note
airflow kubernetes cleanup-pods now takes --min-completed-minutes, which defaults to 1. Terminal pods are therefore no longer deleted immediately; pass --min-completed-minutes 0 to restore the previous behavior. The delay closes a race where cleanup removed a pod before await_pod_completion had read its final state.
Add '--min-completed-minutes' to 'cleanup-pods' to prevent KubernetesPodOperator race condition (#70595)
Add opt-in concurrent pod creation to KubernetesExecutor (#68480)
Prevent deferrable KubernetesPodOperator log parsing from blocking the triggerer event loop (#69661)
Fix KubernetesPodOperator dry_run requiring live Kubernetes API client (#70234)
Build KubernetesInstallKueueOperator manifest URL after rendering (#70335)
Mark KubernetesPodOperator and AgentOperator as durable capable (#70289)
Validate KubernetesResourceBaseOperator yaml_conf after rendering (#70337)
Document Kubernetes RBAC permissions (#68716)
Documenting effect if task state store cleanup for KubernetesPodOperator (#70722)
Nothing published for this version
Nothing published for this version
Nothing published for this version
KubernetesPodOperator.reattach_on_restart is deprecated in favor of the new durable parameter, which keeps the same meaning and the same True default.…
Release Date: 2026-07-28
Note
The KubernetesExecutor now transparently requeues a worker pod that fails before the task process starts (node drain, autoscaler scale-down, node boot race, transient image pull failure, etc.) instead of failing the task on the first pod failure. This is a change in default behavior, controlled by the new [kubernetes_executor] pod_launch_failure_retries option (default 1 ); requeues do not consume a task-level retry. Set it to 0 to restore the previous behavior of failing immediately. Avoid -1 (unlimited) with a pod that fails on every launch, as the failed pods are not cleaned up under the default delete_worker_pods_on_failure = False and will accumulate. The companion pod_launch_failure_excluded_container_reasons option (default Error ) lists container reasons that are excluded from the requeue path.
Note
KubernetesPodOperator.reattach_on_restart is deprecated in favor of the new durable parameter, which keeps the same meaning and the same True default. Passing reattach_on_restart still works and still wins, but emits an AirflowProviderDeprecationWarning on Airflow 3.3+ and will be removed in a future release — rename the argument to durable in your Dags (including in default_args ). On Airflow 3.3+ the reattach itself also changes: the operator now reconnects using the pod identity it persisted in the task state store rather than searching by label, which removes the ambiguity failure that a label search hits when more than one matching pod exists. On older Airflow versions the previous label-search behavior is unchanged.
Replace 'reattach_on_restart' with 'durable' execution in KPO (#69914)
Add streaming task log support to KubernetesExecutor (#69300)
Add running_pod_log_lines config option to KubernetesExecutor (#69301)
Allow configuring XCom sidecar container security context (#69613)
Requeue KubernetesExecutor tasks whose pod failed before execution started (#69058)
Cncf-kubernetes: fix potential race condition in trigger_reentry flow caused by 'is_istio_enabled' (#69269)
Note
The KubernetesExecutor now transparently requeues a worker pod that fails before the task process starts (node drain, autoscaler scale-down, node boot race, transient image pull failure, etc.) instead of failing the task on the first pod failure. This is a change in default behavior, controlled by the new [kubernetes_executor] pod_launch_failure_retries option (default 1); requeues do not consume a task-level retry. Set it to 0 to restore the previous behavior of failing immediately. Avoid -1 (unlimited) with a pod that fails on every launch, as the failed pods are not cleaned up under the default delete_worker_pods_on_failure = False and will accumulate. The companion pod_launch_failure_excluded_container_reasons option (default Error) lists container reasons that are excluded from the requeue path.
Note
KubernetesPodOperator.reattach_on_restart is deprecated in favor of the new durable parameter, which keeps the same meaning and the same True default. Passing reattach_on_restart still works and still wins, but emits an AirflowProviderDeprecationWarning on Airflow 3.3+ and will be removed in a future release — rename the argument to durable in your Dags (including in default_args). On Airflow 3.3+ the reattach itself also changes: the operator now reconnects using the pod identity it persisted in the task state store rather than searching by label, which removes the ambiguity failure that a label search hits when more than one matching pod exists. On older Airflow versions the previous label-search behavior is unchanged.
Replace 'reattach_on_restart' with 'durable' execution in KPO (#69914)
Add streaming task log support to KubernetesExecutor (#69300)
Add running_pod_log_lines config option to KubernetesExecutor (#69301)
Allow configuring XCom sidecar container security context (#69613)
Requeue KubernetesExecutor tasks whose pod failed before execution started (#69058)
Cncf-kubernetes: fix potential race condition in trigger_reentry flow caused by 'is_istio_enabled' (#69269)
Nothing published for this version
- Decide pod_template and image based on Coordinator for lang-SDK tasks on KubernetesExecutor
Release Date: 2026-07-04
Decide pod_template and image based on Coordinator for lang-SDK tasks on KubernetesExecutor (#68713)
Add team_name tags to Kubernetes executor metrics (#69046)
Fix KubernetesExecutor leaking a Manager process when reading running task logs (#68800)
Fix KubernetesExecutor never draining its 'self.completed' adoption set (#68674)
Make cncf.kubernetes model deserialization picklable in-cluster (#68848)
Run 'await_pod_start' before 'await_init_containers_completion' to prevent hanging when streaming init-container logs (#68450)
Handle pod preemption before container creation in KubernetesPodOperator (#68328)
Make pod patching logic explicitly reflect when a pod is retained (#68507)
Fix mypy errors for task_instance access in provider triggers (#68685)
Remove leftovers from #45184 clear_not_launched_queued_tasks removal (#68698)
Decide pod_template and image based on Coordinator for lang-SDK tasks on KubernetesExecutor (#68713)
Add team_name tags to Kubernetes executor metrics (#69046)
Fix KubernetesExecutor leaking a Manager process when reading running task logs (#68800)
Fix KubernetesExecutor never draining its 'self.completed' adoption set (#68674)
Make cncf.kubernetes model deserialization picklable in-cluster (#68848)
Run 'await_pod_start' before 'await_init_containers_completion' to prevent hanging when streaming init-container logs (#68450)
Handle pod preemption before container creation in KubernetesPodOperator (#68328)
Make pod patching logic explicitly reflect when a pod is retained (#68507)
Fix mypy errors for task_instance access in provider triggers (#68685)
Remove leftovers from #45184 clear_not_launched_queued_tasks removal (#68698)
Nothing published for this version
Nothing published for this version
Nothing published for this version
- Enforce execution_timeout in deferrable KubernetesPodOperator
Release Date: 2026-06-11
Enforce execution_timeout in deferrable KubernetesPodOperator (#67229)
Fix scheduler crashloop from KubernetesExecutor completed-pod adoption (#67850)
Fix monitoring-pod leak in KubernetesJobOperator (#67333)
Fix KubernetesPodOperator emitting orphan timestamps for empty container writes (#67652)
Fix multiple_outputs no-op on deferrable KubernetesPodOperator (#67226)
Fix KubernetesPodTrigger.get_task_state KeyError on mapped TIs (#67296) (#67297)
Remove further findings from positional session check (#67712)
Allow kubernetes and kubernetes_asyncio client 36.x in cncf.kubernetes (#68041)
Correct README.rst common compat version reference inconsistency (#67554)
Enforce execution_timeout in deferrable KubernetesPodOperator (#67229)
Fix scheduler crashloop from KubernetesExecutor completed-pod adoption (#67850)
Fix monitoring-pod leak in KubernetesJobOperator (#67333)
Fix KubernetesPodOperator emitting orphan timestamps for empty container writes (#67652)
Fix multiple_outputs no-op on deferrable KubernetesPodOperator (#67226)
Fix KubernetesPodTrigger.get_task_state KeyError on mapped TIs (#67296) (#67297)
Remove further findings from positional session check (#67712)
Allow kubernetes and kubernetes_asyncio client 36.x in cncf.kubernetes (#68041)
Correct README.rst common compat version reference inconsistency (#67554)
Nothing published for this version
Nothing published for this version
Default xcom-sidecar image is now pinned to alpine:3.23 . The default container image for the xcom sidecar (used by KubernetesPodOperator when do_xcom
Release Date: 2026-05-23
Note
Default xcom-sidecar image is now pinned to alpine:3.23 . The default container image for the xcom sidecar (used by KubernetesPodOperator when do_xcom_push=True ) has changed from the unpinned alpine (which resolves to alpine:latest ) to the pinned alpine:3.23 . The pin makes the kubelet’s default imagePullPolicy IfNotPresent instead of Always , so a node with the image cached does not re-pull on every task — protecting deployments and CI from Docker Hub anonymous-pull rate limits.
Deployments that override the image via xcom_sidecar_container_image (or the [kubernetes] xcom_sidecar_container_image config) are unaffected. Deployments that relied on the unpinned default will now be pinned to alpine:3.23 until the next Airflow upgrade. Set xcom_sidecar_container_image explicitly if you need a different alpine version, a private mirror, or another base image.
Fix deferrable KubernetesPodOperator trigger_reentry crash when pod is GC'd before re-entry (#66716)
Fix: Add latency + status metrics around pod API calls (#66806)
Fix misleading pod scheduling log message ("Waiting until" → "Waiting up to") (#66164)
Re-defer task when Kubernetes pod is not completed (#66705)
Fix KubernetesPodTrigger pod terminal state handling (#66650)
Fix race condition in AsyncKubernetesHook corrupting global kubernetes_asyncio config (#65566)
Respecting unwrap_single for non-deferrable execution (#66596)
Fix kubernetes cleanup-pods ignoring --verbose (#65955)
Preserve event resource version after empty sync polls (#66471)
Fix SparkKubernetesOperator with deferrable=True falling through to KubernetesPodOperator.execute() creating a spurious pod (#66448)
KubernetesExecutor: scope periodic completed-pod adoption to dead schedulers (#66400)
Note
Default xcom-sidecar image is now pinned to alpine:3.23. The default container image for the xcom sidecar (used by KubernetesPodOperator when do_xcom_push=True) has changed from the unpinned alpine (which resolves to alpine:latest) to the pinned alpine:3.23. The pin makes the kubelet's default imagePullPolicy IfNotPresent instead of Always, so a node with the image cached does not re-pull on every task — protecting deployments and CI from Docker Hub anonymous-pull rate limits.
Deployments that override the image via xcom_sidecar_container_image (or the [kubernetes] xcom_sidecar_container_image config) are unaffected. Deployments that relied on the unpinned default will now be pinned to alpine:3.23 until the next Airflow upgrade. Set xcom_sidecar_container_image explicitly if you need a different alpine version, a private mirror, or another base image.
Fix deferrable KubernetesPodOperator trigger_reentry crash when pod is GC'd before re-entry (#66716)
Fix: Add latency + status metrics around pod API calls (#66806)
Fix misleading pod scheduling log message ("Waiting until" → "Waiting up to") (#66164)
Re-defer task when Kubernetes pod is not completed (#66705)
Fix KubernetesPodTrigger pod terminal state handling (#66650)
Fix race condition in AsyncKubernetesHook corrupting global kubernetes_asyncio config (#65566)
Respecting unwrap_single for non-deferrable execution (#66596)
Fix kubernetes cleanup-pods ignoring --verbose (#65955)
Preserve event resource version after empty sync polls (#66471)
Fix SparkKubernetesOperator with deferrable=True falling through to KubernetesPodOperator.execute() creating a spurious pod (#66448)
KubernetesExecutor: scope periodic completed-pod adoption to dead schedulers (#66400)
Nothing published for this version
- Move KubernetesPodTrigger pod cleanup from cleanup() to on_kill()
Release Date: 2026-05-11
Move KubernetesPodTrigger pod cleanup from cleanup() to on_kill() (#65741)
Add multi-team lookup to Kubernetes secrets backend (#65694)
Move KubernetesPodTrigger pod cleanup from cleanup() to on_kill() (#65741)
Add multi-team lookup to Kubernetes secrets backend (#65694)
Nothing published for this version
- Treat registry 5xx errors as transient during KubernetesPodOperator pod startup
Release Date: 2026-04-26
Treat registry 5xx errors as transient during KubernetesPodOperator pod startup (#65490)
Fix KubernetesPodOperator to forward pod log levels to Airflow task logs (#64829)
Catch TypeError for non-datetime since_time in _write_logs (#65232)
Do not cache kubeconfig for exec based auth in AsyncKubernetesHook (#65212)
Consider XCOM sidecar container during pod cleanup (#64962)
Handle unknown pod phase in KubernetesPodOperator (#65202)
Allow string conversion to datetime for since_time in KPO logs (#65498)
Treat registry 5xx errors as transient during KubernetesPodOperator pod startup (#65490)
Fix KubernetesPodOperator to forward pod log levels to Airflow task logs (#64829)
Catch TypeError for non-datetime since_time in _write_logs (#65232)
Do not cache kubeconfig for exec based auth in AsyncKubernetesHook (#65212)
Consider XCOM sidecar container during pod cleanup (#64962)
Handle unknown pod phase in KubernetesPodOperator (#65202)
Allow string conversion to datetime for since_time in KPO logs (#65498)
Nothing published for this version
- Add retries for '_write_logs' method in 'KubernetesPodOperator'
Release Date: 2026-04-12
Add retries for '_write_logs' method in 'KubernetesPodOperator' (#64471)
Handle rate limiting of K8s API server in K8s executor (#64504)
Load hook metadata from YAML without importing Hook class (#63826)
Log on_kill job deletion in kubernetes spark operator at INFO level (#64633)
Update cncf's import conf path to use common compat SDK (#64143)
Fix advertising some of the missing provider capabilities via provider info (#64127)
Add explicit type annotations to k8s code to fix mypy (#64260)
Pass parameters to Kubernetes methods conditionally (#64242)
Add retries for '_write_logs' method in 'KubernetesPodOperator' (#64471)
Handle rate limiting of K8s API server in K8s executor (#64504)
Load hook metadata from YAML without importing Hook class (#63826)
Log on_kill job deletion in kubernetes spark operator at INFO level (#64633)
Update cncf's import conf path to use common compat SDK (#64143)
Fix advertising some of the missing provider capabilities via provider info (#64127)
Add explicit type annotations to k8s code to fix mypy (#64260)
Pass parameters to Kubernetes methods conditionally (#64242)
Nothing published for this version
KubernetesJobOperator no longer supports setting parallelism = 0 with wait_until_job_complete=True . Previously this would create a job that would nev
Release Date: 2026-03-28
Warning
KubernetesJobOperator no longer supports setting parallelism = 0 with wait_until_job_complete=True . Previously this would create a job that would never complete and always fail the task. Executing a task with parallelism = 0 and wait_until_job_complete=True will now raise a validation error.
Add runtime_class_name to KubernetesPodOperator (#63952)
Add application name as env var to driver and executor pods for SparkKubernetesOperator (#64015)
Deleting spark job before raising exception "Job took too long to start" in start_spark_job method (#63824) (#63922)
Add cancel_on_kill and safe_to_cancel support to KubernetesPodOperator and trigger (#62401)
Fix misaligned 'queued_tasks' types in hybrid executors (#63744)
Use joinable manager queues (#63789)
K8s unicode log read (#63673)
K8s executor - ensure pods cleaned up (#61839)
Apply verify_ssl=False to returned ApiClient in KubernetesHook (#63478)
Fix KubernetesJobOperator failing when pods are deleted after job completion (#63569)
Fix KubernetesPodOperator XCom sidecar hang on Alpine (#58931)
Add Python 3.14 Support (#63520)
Fix mypy errors in kubernetes, fab, google, and amazon providers (#63947)
Relax 'kubernetes_asyncio<<36.0.0' (#64144)
Clarify reattach order of 'find_spark_job' in 'SparkKubernetesOperator' (#64186)
Fix typos and spelling (#64139)
Warning
KubernetesJobOperator no longer supports setting parallelism = 0 with wait_until_job_complete=True. Previously this would create a job that would never complete and always fail the task. Executing a task with parallelism = 0 and wait_until_job_complete=True will now raise a validation error.
Add runtime_class_name to KubernetesPodOperator (#63952)
Add application name as env var to driver and executor pods for SparkKubernetesOperator (#64015)
Deleting spark job before raising exception "Job took too long to start" in start_spark_job method (#63824) (#63922)
Add cancel_on_kill and safe_to_cancel support to KubernetesPodOperator and trigger (#62401)
Fix misaligned 'queued_tasks' types in hybrid executors (#63744)
Use joinable manager queues (#63789)
K8s unicode log read (#63673)
K8s executor - ensure pods cleaned up (#61839)
Apply verify_ssl=False to returned ApiClient in KubernetesHook (#63478)
Fix KubernetesJobOperator failing when pods are deleted after job completion (#63569)
Fix KubernetesPodOperator XCom sidecar hang on Alpine (#58931)
Add Python 3.14 Support (#63520)
Fix mypy errors in kubernetes, fab, google, and amazon providers (#63947)
Relax 'kubernetes_asyncio<<36.0.0' (#64144)
Clarify reattach order of 'find_spark_job' in 'SparkKubernetesOperator' (#64186)
Fix typos and spelling (#64139)
Nothing published for this version
- Add multi-team support for KubernetesExecutor
Release Date: 2026-03-13
Add multi-team support for KubernetesExecutor (#61798)
Executor Synchronous callback workload (#61153)
fixed an issue that caused a state mismatch (#63061)
Bump minimum cryptography to 44.0.3 and paramiko to 3.4.0 (#62723)
Move determine_kwargs and KeywordParameters to SDK DecoratedOperator (#62746)
Add multi-team support for KubernetesExecutor (#61798)
Executor Synchronous callback workload (#61153)
fixed an issue that caused a state mismatch (#63061)
Bump minimum cryptography to 44.0.3 and paramiko to 3.4.0 (#62723)
Move determine_kwargs and KeywordParameters to SDK DecoratedOperator (#62746)
Nothing published for this version
- Add Kubernetes Secrets Backend to cncf.kubernetes provider
Release Date: 2026-03-02
Add Kubernetes Secrets Backend to cncf.kubernetes provider (#61527)
Fix EKSPodOperator credential refresh errors and improve error handling (#57585) (#58743)
fix: pod_override existing init_containers (#62284)
fix: Transient error state caused by rate limits from the container registry in 'KubernetesPodOperator' (#62215)
[Part 2] Migrate connection UI metadata to YAML for more providers (#62109)
Add Kubernetes Secrets Backend to cncf.kubernetes provider (#61527)
Fix EKSPodOperator credential refresh errors and improve error handling (#57585) (#58743)
fix: pod_override existing init_containers (#62284)
fix: Transient error state caused by rate limits from the container registry in 'KubernetesPodOperator' (#62215)
[Part 2] Migrate connection UI metadata to YAML for more providers (#62109)
Nothing published for this version
- Fix ModuleNotFoundError in kubernetes cleanup cronjob
Release Date: 2026-02-14
Fix ModuleNotFoundError in kubernetes cleanup cronjob (#61673)
Avoid KeyError when Kubernetes omits optional waiting status fields (#60805)
Prevent duplicate Spark Kubernetes pods (#61110)
Fix ModuleNotFoundError in kubernetes cleanup cronjob (#61673)
Avoid KeyError when Kubernetes omits optional waiting status fields (#60805)
Prevent duplicate Spark Kubernetes pods (#61110)
Nothing published for this version
- AsyncKubernetesHook.watch_pod_events could silently stop emitting events when
Release Date: 2026-02-02
AsyncKubernetesHook.watch_pod_events could silently stop emitting events when (#60532)
improved the event which is thrown in the event log tab when a pod failes for k8s exec (#60800)
Ensure deterministic Spark driver pod selection during reattach. Added unit tests. (#60717)
Repair k8 async connection getter (#61138)
Define 'TaskInstanceKey' in task-sdk to support client server separation (#60776)
Use common provider's get_async_connection in other providers (#56791)
AsyncKubernetesHook.watch_pod_events could silently stop emitting events when (#60532)
improved the event which is thrown in the event log tab when a pod failes for k8s exec (#60800)
Ensure deterministic Spark driver pod selection during reattach. Added unit tests. (#60717)
Repair k8 async connection getter (#61138)
Define 'TaskInstanceKey' in task-sdk to support client server separation (#60776)
Use common provider's get_async_connection in other providers (#56791)
Nothing published for this version
- Handle backwards-compatibility for older Google provider
Release Date: 2026-01-21
Handle backwards-compatibility for older Google provider (#60730)
Kubernetes Pod Operator: Skip async defferal when pod already complete (#58684)
Handle backwards-compatibility for older Google provider (#60730)
Kubernetes Pod Operator: Skip async defferal when pod already complete (#58684)
Nothing published for this version
- Replace deprecated import for utcnow() to the new one
Release Date: 2026-01-17
KubernetesPodOperator: Fix hanging API calls (#60254)
KubernetesPodOperator check xcom sidecar running before trying to read xcom (#60319)
Prevent transient error in case when Pod start_time parameter is None (#59097)
Add support for creating jobs with parallelism=0 to KubernetesJobOperator (#60372)
Fix duplicate pod creation in KubernetesJobOperator (#53368)
Kubernetes Pod Operator callbacks repeating log line (#59372)
Fix job_name normalization in KubernetesJobOperator (#60231)
Replace deprecated import for utcnow() to the new one (#60317)
Fix mypy error in provider (#60395)
New year means updated Copyright notices (#60344)
Making kubernetes executor ResourceVersion a self contained singleton (#60324)
Re-apply PriorityWeightStrategy SDK work (#60112)
Introduce a "cli" section in provider metadata (#59805)
Improve changelog descriptions in PR #59947 (latest versions only) (#60036)
KubernetesPodOperator: Fix hanging API calls (#60254)
KubernetesPodOperator check xcom sidecar running before trying to read xcom (#60319)
Prevent transient error in case when Pod start_time parameter is None (#59097)
Add support for creating jobs with parallelism=0 to KubernetesJobOperator (#60372)
Fix duplicate pod creation in KubernetesJobOperator (#53368)
Kubernetes Pod Operator callbacks repeating log line (#59372)
Fix job_name normalization in KubernetesJobOperator (#60231)
Replace deprecated import for utcnow() to the new one (#60317)
Fix mypy error in provider (#60395)
New year means updated Copyright notices (#60344)
Making kubernetes executor ResourceVersion a self contained singleton (#60324)
Re-apply PriorityWeightStrategy SDK work (#60112)
Introduce a "cli" section in provider metadata (#59805)
Improve changelog descriptions in PR #59947 (latest versions only) (#60036)
Nothing published for this version
- Add 'delete_active_pod' cleanup option and corresponding unit tests
Release Date: 2026-01-02
Add 'delete_active_pod' cleanup option and corresponding unit tests (#59160)
Fix '@task.kubernetes_cmd' TaskGroup.expand mappings by templating TaskFlow args (#59292)
Fix 'KubernetesPodOperator' deferrable mode with env-defined connection (#41706) (#58841)
Fix deferred mode KubernetesPodOperator: fast-fail pod start errors (ErrImagePull/ImagePullBackOff) (#59010)
Fix XCom directory creation logic in Kubernetes decorator (#56545) (#59347)
TaskInstance unused method cleanup (#59835)
Remove top-level SDK reference in Core (#59817)
Add and fix SIM107 and B012 Ruff rule (#59770)
Refactor/sqla2 providers(celery, kubernetes, databricks, mysql) to remove SQLA query usage (#59537)
Optimize Kubernetes API usage for watching events (#59080)
Add 'delete_active_pod' cleanup option and corresponding unit tests (#59160)
Fix '@task.kubernetes_cmd' TaskGroup.expand mappings by templating TaskFlow args (#59292)
Fix 'KubernetesPodOperator' deferrable mode with env-defined connection (#41706) (#58841)
Fix deferred mode KubernetesPodOperator: fast-fail pod start errors (ErrImagePull/ImagePullBackOff) (#59010)
Fix XCom directory creation logic in Kubernetes decorator (#56545) (#59347)
TaskInstance unused method cleanup (#59835)
Remove top-level SDK reference in Core (#59817)
Add and fix SIM107 and B012 Ruff rule (#59770)
Refactor/sqla2 providers(celery, kubernetes, databricks, mysql) to remove SQLA query usage (#59537)
Optimize Kubernetes API usage for watching events (#59080)
Nothing published for this version
- Convert the exclusion on urllib3 to != for 2.6.0
Release Date: 2025-12-13
Fix finally return handling (#58998)
Convert the exclusion on urllib3 to != for 2.6.0 (#59203)
Add backcompat for exceptions in providers (#58727)
Limit urllib3 to < 2.6.0 to handle kubernetes client breaking with it (#59108)
Move the traces and metrics code under a common observability package (#56187)
Fix finally return handling (#58998)
Convert the exclusion on urllib3 to != for 2.6.0 (#59203)
Add backcompat for exceptions in providers (#58727)
Limit urllib3 to < 2.6.0 to handle kubernetes client breaking with it (#59108)
Move the traces and metrics code under a common observability package (#56187)
Nothing published for this version
This release of provider is only available for Airflow 2.11+ as explained in the Apache Airflow providers support policy < https://github.com/apache/a
Release Date: 2025-12-02
Note
This release of provider is only available for Airflow 2.11+ as explained in the Apache Airflow providers support policy < https://github.com/apache/airflow/blob/main/PROVIDERS.rst#minimum-supported-version-of-airflow-for-community-managed-providers >_.
Fix Account for job- prefix when truncating job names (#58391)
KubernetesPodOperator: Rework of Kubernetes API retry behavior (#58397)
Fix KuberetesPodTriggerer use correct parameter name to read pod logs. (#58489)
KubernetesPodOperator pushes XCom on successful execution. (#58488)
KubernetesPodOperator PodManager retries during create pod on too many requests error (#58033)
Add JSON serialization for kubeconfig in AsyncKubernetesHook (#57169)
Make the launcher a cached_property and minor change to improve how pod name is retrieved (#58646)
Add retry handling for Kubernetes API client operations in KubernetesPodOperator (#58778)
Move out some exceptions to TaskSDK (#54505)
Bump minimum Airflow version in providers to Airflow 2.11.0 (#58612)
Fix lower bound dependency to common-compat provider (#58833)
Note
This release of provider is only available for Airflow 2.11+ as explained in the Apache Airflow providers support policy <https://github.com/apache/airflow/blob/main/PROVIDERS.rst#minimum-supported-version-of-airflow-for-community-managed-providers>_.
Fix Account for job- prefix when truncating job names (#58391)
KubernetesPodOperator: Rework of Kubernetes API retry behavior (#58397)
Fix KuberetesPodTriggerer use correct parameter name to read pod logs. (#58489)
KubernetesPodOperator pushes XCom on successful execution. (#58488)
KubernetesPodOperator PodManager retries during create pod on too many requests error (#58033)
Add JSON serialization for kubeconfig in AsyncKubernetesHook (#57169)
Make the launcher a cached_property and minor change to improve how pod name is retrieved (#58646)
Add retry handling for Kubernetes API client operations in KubernetesPodOperator (#58778)
Move out some exceptions to TaskSDK (#54505)
Bump minimum Airflow version in providers to Airflow 2.11.0 (#58612)
Fix lower bound dependency to common-compat provider (#58833)
Nothing published for this version
Nothing published for this version
- Identify duplicate kubernetes section airflow configuration and mark them as deprecated
Release Date: 2025-11-17
KubernetesPodTriggerer reads pod logs instead of KubernetesPodOperator (#57531)
Fix 'KubernetesPodOperator' fails to delete pods with None value labels (#53477)
Fix KubernetesExecutor open slots metric (#55797)
improve deferrable KPO handling of deleted pods in between polls (#56976)
KubernetesExecutor: retry pod creation on Kubernetes API 500 errors (#57054)
Convert all airflow distributions to be compliant with ASF requirements (#58138)
Unify Pod Startup Tracking: KubernetesPodTriggerer and KubernetesPodOperator Now Share Common Startup Logic (#56875)
Relax Kubernetes client version support to <35.0.0 (#57413)
Identify duplicate kubernetes section airflow configuration and mark them as deprecated (#57028)
CHG: image (#56593)
KubernetesPodTriggerer reads pod logs instead of KubernetesPodOperator (#57531)
Fix 'KubernetesPodOperator' fails to delete pods with None value labels (#53477)
Fix KubernetesExecutor open slots metric (#55797)
improve deferrable KPO handling of deleted pods in between polls (#56976)
KubernetesExecutor: retry pod creation on Kubernetes API 500 errors (#57054)
Convert all airflow distributions to be compliant with ASF requirements (#58138)
Unify Pod Startup Tracking: KubernetesPodTriggerer and KubernetesPodOperator Now Share Common Startup Logic (#56875)
Relax Kubernetes client version support to <35.0.0 (#57413)
Identify duplicate kubernetes section airflow configuration and mark them as deprecated (#57028)
CHG: image (#56593)
Nothing published for this version
- Move container-related functions from PodManager to a separate file
Release Date: 2025-10-26
Move container-related functions from PodManager to a separate file (#56700)
Add KubernetesPodOperator deferred callbacks (#47108)
Fix KubernetesPodOperator termination_grace_period parameter not being applied to pod spec (#56402)
SparkKubernetesOperator: preserve existing metadata labels in SparkApplication manifest (#56063)
Migrate cncf/kubernetes provider to ''common.compat'' (#57023)
Correct 'Dag' to 'DAG' for code snippets in provider docs (#56727)
Move container-related functions from PodManager to a separate file (#56700)
Add KubernetesPodOperator deferred callbacks (#47108)
Fix KubernetesPodOperator termination_grace_period parameter not being applied to pod spec (#56402)
SparkKubernetesOperator: preserve existing metadata labels in SparkApplication manifest (#56063)
Migrate cncf/kubernetes provider to ''common.compat'' (#57023)
Correct 'Dag' to 'DAG' for code snippets in provider docs (#56727)
Nothing published for this version
- Don't check db migration needlessly for 'airflow celery' cli commands.
Release Date: 2025-09-28
Don't check db migration needlessly for 'airflow celery' cli commands. (#55878)
Relax Kubernetes client version support to <34.0.0 (#55932)
Don't check db migration needlessly for 'airflow celery' cli commands. (#55878)
Relax Kubernetes client version support to <34.0.0 (#55932)
Nothing published for this version
- Fix: Add task context labels to driver and executor pods for SparkKubernetesOperator reattach_on_restart functionality
Release Date: 2025-09-22
Fix: Add task context labels to driver and executor pods for SparkKubernetesOperator reattach_on_restart functionality (#50803)
Add more error handling in pod_manager consume_logs (#55479)
Add more robust check of the container statuses (#55371)
Fix circular import in version_compat (#55809)
Move the KubernetesPodOperator 'convert_config_file_to_dict' call (#55064)
Fix kpo log_events_on_failure logs warnings at warning level (#54967)
Fix: Add task context labels to driver and executor pods for SparkKubernetesOperator reattach_on_restart functionality (#50803)
Add more error handling in pod_manager consume_logs (#55479)
Add more robust check of the container statuses (#55371)
Fix circular import in version_compat (#55809)
Move the KubernetesPodOperator 'convert_config_file_to_dict' call (#55064)
Fix kpo log_events_on_failure logs warnings at warning level (#54967)
Nothing published for this version
- Add customizable log prefix and formatter to KubernetesPodOperator
Release Date: 2025-09-09
Add customizable log prefix and formatter to KubernetesPodOperator (#53598)
Enhanced Pod Failure Logging in KubernetesExecutor (#54115)
fix: Handle Kubernetes API responses with non-JSON bodies (#55107)
Fix KubernetesExecutor retry on 409 conflict (#54777)
KubernetesPodOperator logs pod and container state after error occurred (#54828)
Throttle HTTPError during consume pod logs (#54761)
Remove airflow.models.DAG (#54383)
Refactor Kubernetes Executor Types to NamedTuples (#54858)
Move some items in 'airflow.utils.context' to appropriate places (#53600)
Make term Dag consistent in providers docs (#55101)
Add customizable log prefix and formatter to KubernetesPodOperator (#53598)
Enhanced Pod Failure Logging in KubernetesExecutor (#54115)
fix: Handle Kubernetes API responses with non-JSON bodies (#55107)
Fix KubernetesExecutor retry on 409 conflict (#54777)
KubernetesPodOperator logs pod and container state after error occurred (#54828)
Throttle HTTPError during consume pod logs (#54761)
Remove airflow.models.DAG (#54383)
Refactor Kubernetes Executor Types to NamedTuples (#54858)
Move some items in 'airflow.utils.context' to appropriate places (#53600)
Make term Dag consistent in providers docs (#55101)
Nothing published for this version
- Add support for taking the config file as a dict for KubernetesHook
Release Date: 2025-08-11
Add support for taking the config file as a dict for KubernetesHook (#53126)
Kill kube watcher instance if it doesnt terminate gracefully in 60 seconds (#52662)
Add support for taking the config file as a dict for KubernetesHook (#53126)
Kill kube watcher instance if it doesnt terminate gracefully in 60 seconds (#52662)
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →