apache-airflow-providers-cncf-kubernetes
更新日誌¶
10.4.3¶
Bug 修復¶
移除 CLI 命令中的 'subdir' 引數 (#49317)
雜項¶
使用 contextlib.suppress(exception) 替代 try-except-pass 並新增 SIM105 ruff 規則 (#49251)移除多餘的 else 塊 (#49199)移除 k8s provider 中未使用的 db 方法 (#49186)
10.4.2¶
雜項¶
從 airflow.sdk 匯入 '@task' (#48896)更新 ECS executor 以支援 Task SDK (#48513)
10.4.1¶
Bug 修復¶
處理 pod_manager.get_container_status 中缺失的 container_statuses (#47936)
雜項¶
從基礎 executor 中移除 change_sensor_mode_to_reschedule (#48649)無需專門為 KE 排除 executor_config (#48826)
10.4.0¶
新特性¶
KubernetesPodOperator: 將 base_container_name 新增到模板化欄位中 (#47864)
Bug 修復¶
cncf.kubernetes: 使基礎容器狀態檢查輪詢間隔可配置 (#47774)切換到停用 stdin 的非互動模式 (#47568)在 'KubernetesPodTrigger' 中重試 k8s API 請求 (#47187)
雜項¶
移除用於獲取非同步 hook 的額外方法 (#47313)
10.3.1¶
雜項¶
移除 google-re2 作為依賴項 (#47493)AIP-72: 使用 task sdk 時,為 K8sExecutor 移植 executor_config (#46926)更新 KPO 文件字串中的模板化欄位 + 用語 (#46970)將 flit 升級到 3.11.0 (#46938)
10.3.0¶
注意
此版本沒有程式碼更改。釋出此版本是因為之前版本因打包問題而被撤回。
10.2.0¶
新特性¶
KubernetesPodOperator 新的 callback 並允許使用多個 callback (#44357)
Bug 修復¶
(fix): 如果傳遞給 executor,則使用 pod_template_file 覆蓋渲染 pod 規範 (#46374)fix: kpo 非同步 kube_config_path (#45571)允許在 spark kubernetes 驅動配置中傳遞空標籤 (#45864)fix: spark operator 標籤 (#45353)在待處理的 k8s pod 被刪除時允許內部重試 (#45184)fix: 在作業完成後正確關閉 xcom (#45455)修復 kubernetes executor watcher kube_client_request_args 陰影問題 (#45528)
雜項¶
修復 @task.kubernetes 文件字串中錯誤的 operator 名稱 (#46873)AIP-83 修正案:在 logical date 為 None 時新增生成 run_id 的邏輯 (#46616)移除被忽略的 'pod_generator_deprecated.py' (#46587)使 '@task.kubernetes' pod 命名更具意義 (#46535)chore(kubernetes): 減少冗餘程式碼 (#46574)在 TaskSDK 執行時中新增動態任務對映 (#46032)擴充套件 KPO 模板欄位,修復 Spark k8s operator 測試 (#46268)將 CeleryExecutor 切換為使用 TaskSDK 進行執行 (#46265)將 Pod*Exceptions 移動到單獨的模組 (#45759)為 Context 型別提示新增其他例項 (#45657)AIP-72: 在 SDK 中為 Context 字典提供更好的型別提示支援 (#45583)AIP-72: 將 KubernetesExecutor 切換為使用 taskSDK 進行執行 (#46860)
10.1.0¶
注意
根據 Apache Airflow provider 支援策略 中的說明,此版本的 provider 僅適用於 Airflow 2.9+。
新特性¶
在 KubernetesPodOperator 中為 init container 新增日誌記錄支援 (#42498) (#43853)實現 KubernetesInstallKueueOperator + (#44568)支援對 KubernetesPodOperator 的日誌行進行分組 (#44428)
Bug 修復¶
對比 k8s executor 時使用別名而非完整的 ExecutorName repr (#44967)修復失敗的 KubernetesExecutor (#44931)
雜項¶
移除對 AIRFLOW_V_2_9_PLUS 的引用 (#44987)將 providers 中支援的最低 Airflow 版本提升至 Airflow 2.9.0 (#44956)在 providers 中檢查 Airflow 版本的一致性方法 (#44686)修復 yoda-conditions (#44466)
10.0.1¶
Bug 修復¶
透過從 k8s job client 方法 'delete_namespaced_job' 呼叫中移除意外的 'job' 引數來修復 KubernetesJobOperator.on_kill() (#44131)當任務卡在 queued 狀態時重新排隊 (#43520)
雜項¶
在整個 codebase 中將 execution_date 重新命名為 logical_date (#43902)
10.0.0¶
重大變更¶
警告
所有已棄用的類、引數和功能已從 Kubernetes provider 包中移除。引入了以下重大變更:
- 輔助函式
從
kubernetes_helper_functions.py中移除add_pod_suffix方法。請改用add_unique_suffix。從
PodGenerator中移除make_unique_pod_id方法。請改用kubernetes_helper_functions中的add_unique_suffix。從
kubernetes_helper_functions.py中移除create_pod_id方法。請改用create_unique_id。從
PodGenerator中移除gen_pod方法。從
PodGenerator中移除add_xcom_sidecar方法。請改用airflow.providers.cncf.kubernetes.utils.xcom_sidecar.add_xcom_sidecar。移除在
PodGenerator的from_obj函式中使用字典作為 executor_config 的選項。請改用帶有“pod_override”鍵的kubernetes.client.models.V1Pod類。從
PodGenerator中移除from_legacy_obj方法。移除
airflow.providers.cncf.kubernetes.pod_launcher_deprecated模組。請改用airflow.providers.cncf.kubernetes.utils.pod_manager。
- Operator
移除
airflow.providers.cncf.kubernetes.operators.kubernetes_pod。請改用airflow.providers.cncf.kubernetes.operators.pod。從
KubernetesPodOperator中移除is_delete_operator_pod引數。請改用on_finish_action。從
KubernetesPodOperator中移除progress_callback引數。請改用callbacks。從
KubernetesPodOperator中移除execute_complete方法。請改用trigger_reentry。從
SparkKubernetesOperator中移除xcom_push引數。請改用do_xcom_push。
- Trigger
從
KubernetesPodTrigger中移除should_delete_pod引數。請改用on_finish_action。
- 工具類
從
PodManager中移除progress_callback引數。從
PodManager中移除follow_container_logs方法。請改用fetch_container_logs。
警告
將 @task.kubernetes 中 namespace 的預設值設定為 None,以便在 in_cluster 為 True 時使用叢集名稱空間。使用此裝飾器時務必指定名稱空間。要保留以前的行為,請設定 namespace="default"。
移除 cncf.kubernetes 中的棄用項 (#43689)將 'task.kubernetes' 中 'namespace' 的預設值更改為 None (#43402)
Bug 修復¶
為 SparkKubernetesOperator 新增 random_name_suffix (#43847)在未知錯誤情況下終止 kubernetes watch (#43645)更新 'find_pod' 函式的 'namespace' 優先順序 (#43762)
雜項¶
AIP-72: 移除 DAG pickling (#43667)
9.0.1¶
Bug 修復¶
(fix): 在 kubernetes executor 中重新排程其他 executor 的 HybridExecutor 任務 (#43003)(fix): 在 trigger_reentry 時使用例項的 base_container_name 來獲取日誌 (#42960)
雜項¶
將 kubernetes_conn_id 新增到模板化欄位 (#42786)允許在 KPO 中進行 node_selector 模板化 (#43051)將 Kubernetes Python SDK 的最大版本提升到 31.0.0 (#42907)
9.0.0¶
重大變更¶
警告
在從 Airflow 1 升級到 2 期間,透過 execution_date 識別 pod 的支援已被移除。這可能導致為最初由 Airflow 1 啟動的任務啟動重複的 pod,但只有一個任務 pod 會成功。
kubernetes executor cleanup_stuck_queued_tasks 最佳化 (#41220)
Bug 修復¶
所有 executor 都應繼承自 BaseExecutor (#41904)修復在獲取日誌時 pod 失敗的情況下標記為成功的問題 (#42815)修復 SparkKubernetesOperator spark 名稱 (#42427)如果憑據重新整理, KubernetesPodOperator 不會停止 (#42361)重構了 'await_xcom_sidecar_container_start' 方法 (#42504)KubernetesHook 的 kube_config extra 可以接受字典 (#41413)
雜項¶
核心和 providers 放棄對 python3.8 的支援 (#42766)從 k8s executor pod selector 中移除 airflow_version (#42751)
8.4.2¶
雜項¶
移除棄用的配置 (#42129)更新 AsyncKubernetesHook 中的 docstring (#41929)從 Kubernetes Provider 中移除對 Airflow 2.7 的支援 (#41746)從 providers 中移除棄用的 soft_fail (#41710)
8.4.1¶
Bug 修復¶
fix: 修復當 watcher 收到 reason 為 ProviderFailed 的事件時, 'KubernetesExecutor' 導致任務失敗的問題 (#41186)fix: 修復 KubernetesJobOperator 的 'do_xcom_push' 和 'get_logs' 功能 (#40814)fix: 修復當 '_is_in_cluster' 設定為 False 時, 'KubernetesHook' 載入配置檔案的問題 (#41464)fix: 'CeleryKubernetesExecutor' 和 'LocalKubernetesExecutor' 中缺失 'slots_occupied' (#41602)
8.4.0¶
注意
根據 Apache Airflow provider 支援策略 中的說明,此版本的 provider 僅適用於 Airflow 2.8+。
雜項¶
將 providers 中支援的最低 Airflow 版本提升至 Airflow 2.8.0 (#41396)在 docstring 中正確描述行為 (#41458)移除棄用的 SubDags (#41390)重新排序 'SparkKubernetesOperator' 的 docstring (#41372)
8.3.4¶
Bug 修復¶
將 kube/config 檔案的內容作為字典傳遞給 triggerer (#41178)修復 kubernetes executor 中令人困惑的日誌訊息 (#41035)修復收養已完成 pod 時 ApiException 的處理問題 (#41109)
8.3.3¶
Bug 修復¶
解決使用 task decorator 和匯入的 typing 元素時 KPO 任務失敗的問題 (#40642)
雜項¶
8.3.2¶
Bug 修復¶
修復由於叢集中已完成 pod 過多導致 Scheduler 重啟的問題 (#40183)
雜項¶
將最低支援的 kubernetes lib 版本提升到 kubernetes 29.0.0 (#40253)
8.3.1¶
Bug 修復¶
修復 KubernetesPodTrigger 因超時導致正在執行的 pod 失敗的問題 (#40019)在 token 過期時重新整理 KubernetesPodOperator 的屬性,包括在記錄日誌時 (#39789)修復同步模式下 reattach_on_restart 引數的問題 (#39329)避免在 kubernetes executor 重試時重置已收養的任務例項 (#39406)
雜項¶
為 pod pending 事件包含 fatal reason (#39924)
8.3.0¶
新特性¶
在 k8s executor 監視 pod 事件時新增超時 (#39551)為 KubernetesCreateResourceOperator 和 KubernetesJobOperator 新增重試邏輯 (#39201)
Bug 修復¶
修復 'cncf.kubernetes' provider 中的棄用呼叫 (#39381)處理 pod 成功完成時獲取日誌的異常 (#39296)修復 read_namespaced_pod_log 呼叫中錯誤的引數 (#39874)
雜項¶
將 Kubernetes cli 移動到 provider 包 (#39587)移除 2.7.0 的 compat 程式碼 - 它現在是最小 Airflow 版本 (#39591)簡化 'airflow_version' 匯入 (#39497)在 KubernetesPodOperator._write_logs 中用 client.read_namespaced_pod_log 替換 pod_manager.read_pod_logs (#39112)在 KPO 中新增警告訊息,警告一秒間隔日誌重複的問題 (#39861)
8.2.0¶
注意
此 provider 版本僅適用於 Airflow 2.7+ 版本,如 Apache Airflow provider 支援策略 中所述。
新特性¶
在 KPO trigger 中新增缺失的資訊性日誌,直到容器完成 (#37546)
Bug 修復¶
修復 k8s pod operator 的模板化環境變數 (#39139)修復使用 initContainers 時的 SparkKubernetesOperator 問題 (#38119)KubernetesPodOperator 在 k8s 因 token 過期而失敗時重新整理屬性 (#39325)
其他¶
將 provider 中的最小 Airflow 版本提升至 Airflow 2.7.0 (#39240)移除 cncf provider 中不必要的驗證。 (#39238)將棄用的 pod_generator 中的 airflow 匯入移至本地 (#39062)KPO xcom sidecar 的 PodDefault 用法 (#38951)
8.1.1¶
Bug 修復¶
避免 KPO 記錄空行 (#38247)
8.1.0¶
新特性¶
KPO 在終止步驟中新增跟蹤日誌 (#38081)新增 GKECreateCustomResourceOperator 和 GKEDeleteCustomResourceOperator operator (#37616)為 KubernetesJobOperator 實現可延遲模式 (#38251)建立 KubernetesPatchJobOperator operator (#38146)為 KubernetesDeleteJobOperator 實現 delete_on_status 引數 (#38458)為 GKEStartJobOperator 實現可延遲模式 (#38454)在啟動時檢查 pod 時使用 startup_check_interval_seconds 代替 poll_interval (#38075)為 KubernetesJobOperator 實現 wait_until_job_complete 引數 (#37998)
Bug 修復¶
使用 SIGINT 訊號編號代替訊號名稱 (#37905)修復 spark operator 從 driver 檢索日誌的問題 (#38106)修復自定義 launcher 的動態分配規範處理問題 (#38223)修復 SparkKubernetesOperator.application_file 是模板化檔案的情況 (#38035)fix: 減少 pod 事件的不相關錯誤日誌。 (#37944)
其他¶
新增 GKEListJobsOperator 和 GKEDescribeJobOperator (#37598)移除了 provider k8s pod.py 中用於命名 pod 的棄用函式的用法。 (#38638)建立 DeleteKubernetesJobOperator 和 GKEDeleteJobOperator operator (#37793)重構 GKE hooks (#38404)
8.0.1¶
Bug 修復¶
在 worker pod 出現致命容器狀態時立即使任務失敗 (#37670)在 pod 建立失敗的情況下跳過 pod 清理 (#37671)
其他¶
避免使用不推薦的日誌記錄用法 (#37792)將 executor 文件遷移到相應的 provider (#37728)
8.0.0¶
破壞性變更¶
在出現 Kube API 超出配額錯誤的情況下,我們引入了 task_publish_max_retries 標誌來控制重新排隊任務的行為。預設行為已從無限次重試更改為 0。預設行為是不重試 (task_publish_max_retries==0)。要設定為無限次重試,請設定 task_publish_max_retries=-1。要設定為固定次數重試,請將 task_publish_max_retries 設定為任何正整數。
Fix: 在 pod 啟動錯誤的情況下,任務會永久卡在排隊狀態 (#36882)
新特性¶
在 KubernetesPodOperator 中新增 logging_interval 以定期記錄容器日誌 (#37279)建立 GKEStartJobOperator 和 KubernetesJobOperator (#36847)
Bug 修復¶
修復 python_kubernetes_script 偶爾出現的 attr-undefined (#37318)修復 deferrable 任務帶 do_xcom_push 時 KPO 掛起的問題 (#37300)修復 'SparkKubernetesOperator.template_body' 的渲染問題 (#37271)修復 'KubernetesPodOperator' 中 '__init__' 中模板欄位的賦值問題 (#37010)KPO 保持 execute_complete 和 trigger run 方法的向後相容性 (#37454)修復 KPO 任務在 pod 未能在指定超時時間內啟動時掛起的問題 (#37514)修復 KPO 過早退出時的 KeyError (#37508)
其他¶
feat: 將所有類、函式、方法的棄用標記切換為裝飾器 (#36876)Kubernetes 版本升級 (#37040)新增 GKEStartKueueInsideClusterOperator (#37072)將 Kubernetes ApiException 狀態碼轉換為字串,以確保其被正確檢查 (#37405)
7.14.0¶
新特性¶
新增 SparkKubernetesOperator crd 實現 (#22253)在 KubernetesPodOperator 中對 configmaps 提供模板欄位支援 (#36922)為 KubernetesPodOperator 建立通用的回撥類 (#35714)
Bug 修復¶
fix: 避免在 KubernetesPodOperator 已被標記為失敗後重試 (#36749)修復 provider 中 warnings.warn 的 stacklevel (#36831)增加 read_pod_logs 中的 tenacity 等待時間 (#36955)36888-修復 7.14.0rc1 中的 k8 configmap 問題 (#37001)
其他¶
更改 kube_config 的欄位型別 (#36752)更改 CNCF provider 的 docstring 中的措辭 (#36547)新增對 Pendulum 3 的支援 (#36281)
7.13.0¶
新特性¶
允許更改 'KubernetesResourceBaseOperator' 中的 'config_file' (#36397)
其他¶
在更改 KubernetesPodOperator 引數時新增關於更新 stub 檔案的提醒 (#36434)如果未設定 skip_on_exit_code ,則不在 KubernetesPodOperator 中獲取 pod 狀態 (#36355)移除 k8s pod operator 中棄用的輸入引數 (#36433)提升最小 airflow 版本到 2.6.0 後,從 Kubernetes decorator 中刪除 get_python_source (#36426)移除 K8S pod operator 模組中重複的方法,並從 helper 函式匯入它們 (#36427)
7.12.0¶
新特性¶
向 KPO 日誌獲取呼叫新增 _request_timeout (#36297)向 'KubernetesPodOperator' 新增 'pod_template_dict' 欄位 (#33174)KubernetesPodTrigger: 在 TriggerEvent 中新增異常堆疊跟蹤 (#35716)使 pod_name 長度等於 HOST_NAME_MAX (#36332)將 KubernetesPodTrigger hook 移至 cached property (#36290)
Bug 修復¶
Kubernetes executor 執行槽洩露修復 (#36240)在子類中遵循 BaseHook 連線欄位方法的簽名 (#36086)list pods 效能最佳化 (#36092)
7.11.0¶
注意
此 provider 版本僅適用於 Airflow 2.6+ 版本,如 Apache Airflow provider 支援策略 中所述。
Bug 修復¶
fix: KPO env_vars 的型別問題 (#36048)當狀態為 None 時,停止將其轉換為 TaskInstanceState (#35891)Feature: 在 SparkKubernetesOperator 的 application_file 中傳遞字典配置 (#35848)
其他¶
將 provider 中的最小 Airflow 版本提升至 Airflow 2.6.0 (#36017)
7.10.0¶
新特性¶
在 KubernetesPodOperator 中新增 annotations 欄位 (#35641)向 KubernetesResourceBaseOperator 新增 custom_resource_definition (#35600)
Bug 修復¶
Revert 移除 PodLoggingStatus 物件 #35422 (#35822)修復 K8S executor 使用 pod_override_object 覆蓋配置的問題 (#35185)修復並重新應用 provider 文件的模板 (#35686)
其他¶
移除 KPO 日誌記錄中無關的程式碼片段 (#35416)移除 'KubernetesResourceBaseOperator' docstring 中不存在的引數KubernetesExecutor 可觀測性改進 (#35579)
7.9.0¶
新特性¶
新增 provider 文件符合預期的驗證 (#35424)將 startup_check_interval_seconds 新增到 PodManager 的 await_pod_start (#34231)
Bug 修復¶
移除 KPO 重試中的 before_log ,並在中斷時新增 traceback (#35423)移除 KPO 日誌內部函式 consume_logs 上的 tenancity (#35504)
其他¶
簡化 KPO 多容器日誌協調邏輯 (#35450)移除 PodLoggingStatus 物件 (#35422)改進 clear_not_launched_queued_tasks 呼叫持續時間 (#34985)對空 xcom 結果 sentinel 使用常量 (#35451)
7.8.0¶
新特性¶
新增到 KubernetesOperator V1VolumeMount 的渲染,包括 sub_path (#35129)feat: 在 KubernetesPodOperator 的 pod spec 中新增 hostAliases (#35063)
Bug 修復¶
將 AsyncKubernetesHook 中的阻塞 IO 替換為非同步 IO (#35162)合併 KubernetesPodTrigger 中警告的 stacklevel (#35079)
7.7.0¶
注意
此 provider 版本僅適用於 Airflow 2.5+ 版本,如 Apache Airflow provider 支援策略 中所述。
Bug 修復¶
修復解析 KubernetesPodOperator 多行日誌的問題 (#34412)修復 KubernetesPodTrigger 啟動超時問題 (#34579)修復在 istio-sidecar 移除後 Pod 未被移除的問題 (#34500)透過重用 PodLogsConsumer 移除重複日誌 (#34127)
其他¶
提升 provider 的最小 airflow 版本 (#34728)棄用警告級別設定為 stacklevel 2 (#34530)在 provider 中使用 'airflow.exceptions.AirflowException' (#34511)
7.6.0¶
新特性¶
向 'KubernetesPodOperator' 新增 'progress_callback' 引數 (#34153)
Bug 修復¶
將 Pod*Exceptions 的定義移至 pod_generator (#34346)在 'KubernetesPodOperator' 延遲前推送到 xcom (#34209)
其他¶
重構: 合併 provider 中的 import textwrap (#34220)
7.5.1¶
Bug 修復¶
fix(providers/spark-kubernetes): 在丟擲異常時遵循 soft_fail 引數 (#34167)在 SparkKubernetesSensor 中對 hook 使用 'cached_property' (#34106)在 SparkKubernetesOperator 中對 hook 使用 cached property (#34130)
其他¶
合併 provider 中相似的 if 邏輯 (#33987)移除 provider 中無用的字串連線 (#33968)重構 provider 中不必要的跳轉 (#33833)在 provider 中查詢正值時,將 loop 替換為 any (#33984)在 kubernetes provider 中,當可能時,將 try 移到迴圈外 (#33977)將 Airflow provider 中的序列連線替換為解包 (#33933)在 provider 中,當 key 未使用時,將 dict.items 替換為 values (#33939)重構: 合併 import datetime (#34110)
7.5.0¶
新特性¶
新增 istio 測試,使用 curl /quitquitquit 退出 sidecar ,以及其他一些... (#33306)向 'KubernetesPodOperator' 新增 'active_deadline_seconds' 引數 (#33379)使 cluster_context 模板化 (#33604)
Bug 修復¶
修復 KubernetesPodOperator 在中斷時日誌重複的問題 (#33500)修復 2.7.0 db 遷移 job 錯誤 (#33652)在決定是否跳過時,檢查容器狀態而不是 last_state (#33702)修復 kill istio proxy 邏輯 (#33779)
其他¶
引入類常量使 worker pod 日誌行可配置 (#33378)為 KPO SCC 物件新增型別 (#33381)重構: 移除無用的 str() 呼叫 (#33629)重構: 改進重複項檢測和列表排序 (#33675)將 Sqlalchemy 查詢重構為 2.0 風格 (第 7 部分) (#32883)合併 itertools 的匯入和用法 (#33479)簡化其他 provider 中 len() 的條件 (#33569)從 datetime 匯入 utc 並標準化其匯入 (#33450)始終使用 'typing_extensions' 中的 'Literal' (#33794)在 provider 中使用字面量 dict 代替呼叫 dict() (#33761)透過將 cncf.kubernetes provider 中的一些模組匯入移至型別檢查塊中來改進模組匯入 (#33781)
7.4.2¶
其他¶
向 cncf.kubernetes 和 celery provider 新增缺失的 re2 依賴 (#33237)使 'OnFinishAction' 列舉繼承自 str ,以支援將其傳遞給 'KubernetesPodOperatpor' (#33228)重構: 簡化 providers/cncf 中的程式碼 (#33230)在 Airflow executors 中將 State 替換為 TaskInstanceState (#32627)
7.4.1¶
Bug 修復¶
修復讀取其他容器日誌時等待基礎容器的問題 (#33127)Fix: 'xcom_sidecar' 的可配置 Docker 映象 (#32858)修復 'KubernetesPodOperator' 子類預設的 container_logs (#33090)考慮 在 處理 Pod 查詢 過程 時使用 自定義 Pod 標籤 在 'KubernetesPodOperator' 中 (#33057)
其他¶
為 執行器 的 CLI 命令 新增 文件 生成 (#33081)
7.4.0¶
注意
此提供程式版本是第一個將 Kubernetes Executor 和 Local Kubernetes Executor 從核心 apache-airflow 包遷移到 cncf.kubernetes 提供程式包的版本。
新特性¶
將 所有 k8S 類 移至 cncf.kubernetes 提供程式 (#32767)[AIP-51] 執行器 提供的 CLI 命令 (#29055)為 'KubernetesPodOperator' 新增 'termination_message_policy' 引數 (#32885)
其他¶
在 SparkK8SOp 中,當監視器 資源 版本 太舊時,更新 該版本 (#32768)為 提供程式 模組 和 類 文件字串 新增 棄用 資訊 (#32536)在 執行器 的 CLI 提供中, 引發 原始 匯入 錯誤 (#32931)
7.3.0¶
新特性¶
從 KubernetesOperatorPod 中的 所有 容器 記錄 日誌 (#31663)
Bug 修復¶
透過在 清理 之前 等待 Pod 在 'execute_complete' 中 終止,修復 非同步 KPO (#32467)
7.2.0¶
新特性¶
為 'KubernetesPodOperator' 新增 'on_finish_action' (#30718)
Bug 修復¶
修復 KubernetesPodOperator 驗證 xcom json 並新增 重試 (#32113)修復 'KubernetesPodTrigger' 等待 策略 (#31348)修復 spark-kubernetes-operator 相容性 (#31798)
其他¶
新增 default_deferrable 配置 (#31712)
7.1.0¶
注意
此版本放棄了對 Python 3.7 的支援
新特性¶
KubernetesResourceOperator - KubernetesDeleteResourceOperator 和 KubernetesCreateResourceOperator (#29930)在 迴圈中 當 事件被 yield 時新增 一個 return 以停止 執行 (#31985)在 任務失敗 的情況下, 新增 停用 記錄 Pod 模板 的可能性 (#31595)
Bug 修復¶
從 triggers 類中 yield 後移除 return 語句 (#31703)修復 AWS 系統測試的 Fargate 日誌記錄 (#31622)
其他¶
移除 對 Python 3.7 的支援 (#30963)
7.0.0¶
注意
如 Apache Airflow 提供程式支援策略 中所述,此提供程式版本僅適用於 Airflow 2.4+。
重大更改¶
注意
當 Kubernetes 連線中未定義名稱空間時返回 None
從 KubernetesHook 中移除 已棄用的 功能 (#31402)
新特性¶
注意
如果未定義 kubernetes_default 連線,則 KubernetesHook / KubernetesPodOperator 將表現得如同提供了 conn_id=None。這應該會更容易緩解 6.0.0 中引入的重大更改。
即使缺少 預設 連線, K8s hook 也應 能正常 工作 (#31187)新增 協議 以定義 KubernetesPodOperator 依賴的 方法 (#31298)
Bug 修復¶
修復 kubernetes 任務 裝飾器 pickle 錯誤 (#31110)
其他¶
提高 提供程式中 的 最低 Airflow 版本 (#30917)空 的 xcom 結果 檔案 日誌 訊息 更具體 (#31228)為 KubernetesPodOperator 新增 選項 (#30992)在 延遲的 'KubernetesPodOperator' 中,新增 從連線讀取 K8S 配置檔案的 缺失部分 (#29498)
6.1.0¶
新特性¶
在 'DockerOperator' 和 'KubernetesPodOperator' 的 跳過 邏輯中,新增 多個 退出碼 處理 (#30769)當 KubernetesPodOperator 任務 返回 提供的 退出碼時 跳過 該任務 (#29000)
6.0.0¶
重大更改¶
在 KubernetesPodOperator 中預設使用 kubernetes_default 連線。
為 KubernetesPodOperator 使用 預設 連線 ID (#28848)
新特性¶
允許 為 XCOM 容器 設定 限制 (#28125)
5.3.0¶
新特性¶
增強 spark_k8s_operator (#29977)
Bug 修復¶
修復 當 'get_logs=False' 時, KubernetesPodOperator xcom push 的問題 (#29052)修復了 掛起的 KubernetesPodOperator (#28336)
其他¶
使 cncf 提供程式 檔名 與 AIP-21 對齊 (#29905)從 所有 taskflow 裝飾器 中移除 “樣板程式碼” (#30118)確保 setup/teardown 在 先前裝飾過的 函式上 工作 (#30216)
5.2.2¶
Bug 修復¶
透過將 條件語句 更改為 map,改進了 'KubernetesPodOperator._render_nested_template_fields' (#29760)
5.2.1¶
Bug 修復¶
修復 @task.kubernetes 以接收 輸入 和傳送 輸出 (#28942)
5.2.0¶
新特性¶
為 ''KubernetesPodOperator'' 新增 可延遲模式 (#29017)允許 在 K8s Pod Operator 中 設定 基礎 容器 的 名稱 (#28808)
Bug 修復¶
在 將 KPO 標記為 checked 時,僅修補 單個 標籤 (#29279)
5.1.1¶
Bug 修復¶
修復 不正確的 'await_container_completion' (#28771)
5.1.0¶
新特性¶
新增 Flink on K8s Operator (#28512)為 KPO 新增 與卷相關的 巢狀 模板 欄位 (#27719)允許 k8s executor / KPO 使用 更長的 Pod 名稱 (#27736)在 k8s 執行中,為 Pod 日誌 讀取 使用 標籤 代替 Pod 名稱 (#28546)
Bug 修復¶
當 Pod 不成功時,修補 “checked” (#27845)將 k8s executor 的 Pod 名稱 保持在 63 個字元 以內 (#28237)
其他¶
從 提供程式中 移除 過時的 compat 匯入/程式碼 (#28507)重組 文件 (#27235)
5.0.0¶
注意
如 Apache Airflow 提供程式支援策略 中所述,此提供程式版本僅適用於 Airflow 2.3+。
重大更改¶
以前,KubernetesPodOperator 依賴核心 Airflow 配置(即 kubernetes executor 的設定)來生成客戶端時使用某些設定。此項考慮在 4.1.0 中已棄用,現已移除。如果您以前依賴 Airflow 配置,並且希望客戶端生成具有非預設配置,您將需要在 Airflow 連線中定義您的配置,並將 KPO 設定為使用該連線。有關定義 kubernetes Airflow 連線的詳細資訊,請參閱 kubernetes 提供程式文件。
放棄支援在 KubernetesPodOperator 中以字典形式提供 resource。您應該使用 container_resources 和 V1ResourceRequirements。
KubernetesPodOperator 中的引數 node_selectors 已被移除;請改用 node_selector。
KubernetesPodOperator 的以下後向相容模組已被移除,您現在必須使用 kubernetes 庫中相應的物件
airflow.kubernetes.backcompat.podairflow.kubernetes.backcompat.pod_runtime_info_envairflow.kubernetes.backcompat.volumeairflow.kubernetes.backcompat.volume_mount移除 KPO 已棄用的 後向相容 物件 (#27518)移除 對 KPO 中 node_selectors 引數的 支援 (#27515)移除 k8s hook 中 未使用的 後向相容 方法 (#27490)放棄 支援 在 ''KubernetesPodOperator'' 中以 字典形式 提供 ''resource'' (#27197)不考慮 KPO 的 airflow core 配置 (#26849)
其他¶
將 所有 提供程式 的 最低 airflow 版本 移至 2.3.0 (#27196)在 log.exception 比 log.error 更經濟的 地方使用 log.exception (#27517)
新特性¶
KubernetesPodOperator 引數 name 現在是可選的。以前,當不提供 Pod 模板或完整的 Pod 規範時,name 是 KubernetesPodOperator 的必需引數。現在,如果未提供 name,將使用 task_id。
KubernetesPodOperator 引數 namespace 現在是可選的。如果未透過 KPO 引數、Pod 模板檔案或完整的 Pod 規範提供,我們將檢查 airflow 連線,然後,如果在 k8s pod 中,嘗試從容器推斷名稱空間,最後將使用 default 名稱空間。
當使用型別為 kubernetes 的 Airflow 連線時,如果在環境變數或 secrets 後端中定義連線,不再需要為“extra”欄位加上 extra__kubernetes__ 字首。如果 extra 包含重複欄位(一個帶字首,一個不帶),則將使用沒有字首的那個。
從 k8s hook extra 中移除 extra__kubernetes__ 字首 (#27021)將 container_resources 新增為 KubernetesPodOperator 可模板化的 (#27457)為 SparkKubernetesSensor 新增 container_name 選項 (#26560)允許 在 KPO 中配置 xcom sidecar 容器 映象 (#26766)改進 task_id 到 Pod 名稱的 轉換 (#27524)使 KubernetesPodOperator 中的 Pod 名稱 可選 (#27120)使 KPO 的 名稱空間 可選 (#27116)為 @task.kubernetes 裝飾器 啟用 env_vars 欄位的 模板 渲染 (#27433)
Bug 修復¶
修復 KubernetesHook 在 屬性不存在時 失敗的 問題 (#25787)修復 kubernetes hooks 的 日誌 訊息 (#26999)KPO 應該 使用 hook 的 get namespace 方法 來獲取 名稱空間 (#27516)
新的棄用¶
- 在
KubernetesHook.get_namespace中,如果定義了連線但未設定名稱空間,我們 當前返回 ‘default’;此行為已棄用 (#27202)。在下一個版本中,我們將返回
None。
- 在
棄用 在 PodManager 中使用 core get_kube_client (#26848)
4.4.0¶
新特性¶
feat(KubernetesPodOperator): 新增 對 container_security_context 的支援 (#25530)新增 @task.kubernetes taskflow 裝飾器 (#25663)美化 列印 KubernetesPodOperator 渲染的 模板 env_vars (#25850)
Bug 修復¶
當 只需要 一個項時, 避免 計算 所有 元素 (#26377)在 sidecar 執行 之前,等待 xcom sidecar 容器 啟動 (#25055)
4.3.0¶
新特性¶
使用 ParamSpec 改進 taskflow 型別 提示 (#25173)
Bug 修復¶
修復 xcom_sidecar 卡住 問題 (#24993)
4.2.0¶
新特性¶
為 KPO Pod 新增 'airflow_kpo_in_cluster' 標籤 (#24658)在 KubernetesPodOperator 中,使用 找到的 Pod 進行 刪除 (#22092)
Bug 修復¶
還原 "修復 await_container_completion 條件 (#23883)" (#24474)更新 提供程式 以使用 functools compat 對於 ''cached_property'' (#24582)
其他¶
將 Kub op 中的 'resources' 引數 重新命名為 k8s_resources (#24673)
4.1.0¶
新特性¶
以前,KubernetesPodOperator 依賴核心 Airflow 配置(特別是 kubernetes executor 的設定)來生成客戶端時使用某些設定。現在 KubernetesPodOperator 使用 KubernetesHook,並且對核心 k8s 設定的考慮已正式棄用。
如果您使用 Airflow 配置設定(例如,與運算子引數相對)來配置 kubernetes 客戶端,則在下一個主要版本之前,您將需要新增一個 Airflow 連線,並將您的 KPO 任務設定為使用該連線。
在 KubernetesPodOperator 中使用 KubernetesHook 建立 api client (#20578)[特性] KPO 使用 K8S hook (#22086)為 KubernetesHook 和 KubernetesPodOperator 新增 引數 文件 (#23955) (#24054)
Bug 修復¶
在 將 KPO Pod 修補為 “checked” 時,使用 “remote” Pod (#23676)在 KPO _suppress 函式中 不使用 root logger (#23835)修復 await_container_completion 條件 (#23883)
其他¶
將 Cncf.Kubernetes 示例 DAG 遷移到 新設計 #22441 (#24132)清理 日誌 呼叫中 的 f-strings (#23597)
4.0.2¶
Bug 修復¶
修復: 解析 日誌時 出現 異常 #20966 (#23301)修復了 Kubernetes Operator 大容量 xcom 內容 缺陷 (#23490)澄清 'reattach_on_restart' 行為 (#23377)
4.0.1¶
Bug 修復¶
在 airflow 異常中 新增 k8s 容器的 錯誤 訊息 (#22871)KubernetesHook 應在 未另行配置時優先嚐試 incluster (#23126)KubernetesPodOperator 應始終 patch "already checked" (#22734)在 SparkKubernetesOperator 中刪除舊的 Spark Application (#21092)清理重複程式碼,現在 k8s provider 要求 2.3.0+ (#22845)修復 ''KubernetesPodOperator'' 與 'KubernetesExecutor'' 在 2.3.0 上的問題 (#23371)修復 KPO 中使用連字元而不是點的問題 (#22982)修復 main 分支中新的 MyPy 錯誤 (#22884)
4.0.0¶
不相容變更¶
版本 4.0.0 的 provider 僅適用於 Airflow 2.3+。如果您想使用 provider 4.* 系列中的功能或修復,請將 Airflow 升級到 2.3 版本。
不相容的主要原因是使用了最新的 Kubernetes Libraries。cncf.kubernetes provider 需要比 Airflow 2.1 和 2.2 用於 Kubernetes Executor 的庫版本更新,這使得該 provider 與這些 Airflow 版本不相容。
新功能¶
僅在 ''DEBUG'' 級別記錄 KPO 日誌讀取中斷的 traceback (#22595)更新我們處理執行器繫結依賴項的方法 (#22573)在 KPO pod_manager 中可選地不跟蹤日誌 (#22412)
Bug 修復¶
停止在從 kubernetes 客戶端接收到空日誌時崩潰 (#22566)
3.1.2 (YANKED)¶
警告
此版本已被 yanked,原因為:在 Airflow 2.1、2.2 上安裝允許安裝不受支援的 kubernetes 庫 > 11.0.0
Bug 修復¶
修復為所有 providers 錯誤新增的 install_requires (#22382)修復 "run_id" 在 k8s 和 elasticsearch 上與 Airflow 2.1 的相容性問題 (#22385)
雜項¶
移除用於 K8s 令牌重新整理的 RefreshConfiguration 變通方法 (#20759)
3.1.1 (YANKED)¶
警告
此版本已被 yanked,原因為:在 Airflow 2.1、2.2 上安裝允許安裝不受支援的 kubernetes 庫 > 11.0.0
雜項¶
在 PyPI 中新增 Trove 分類器 (Framework :: Apache Airflow :: Provider)
3.1.0 (YANKED)¶
警告
此版本已被 yanked,原因為:在 Airflow 2.1、2.2 上安裝允許安裝不受支援的 kubernetes 庫 > 11.0.0
新功能¶
為對映的 KubernetesPodOperator 新增 map_index 標籤 (#21916)將 KubernetesPodOperator 標籤從 execution_date 改為 run_id (#21960)
雜項¶
支援 Python 3.10修復 Kubernetes 示例中錯誤的 operator 大小寫問題 (#21898)從 KPO docstring 中移除 types (#21826)
3.0.2 (YANKED)¶
警告
此版本已被 yanked,原因為:在 Airflow 2.1、2.2 上安裝允許安裝不受支援的 kubernetes 庫 > 11.0.0
Bug 修復¶
為 cncf 新增遺漏的 deprecations (#20031)
3.0.1 (YANKED)¶
警告
此版本已被 yanked,原因為:在 Airflow 2.1、2.2 上安裝允許安裝不受支援的 kubernetes 庫 > 11.0.0
雜項¶
更新 Kubernetes 庫版本 (#18797)
3.0.0¶
不相容變更¶
引數 is_delete_operator_pod 預設值更改為 True (#20575)簡化 KubernetesPodOperator (#19572)將 pod_mutation_hook 呼叫從 PodManager 移至 KubernetesPodOperator (#20596)將 ''PodLauncher'' 重新命名為 ''PodManager'' (#20576)
引數 is_delete_operator_pod 的新預設值¶
之前,引數 is_delete_operator_pod 的預設值為 False,這意味著任務執行後,其 pod 不會被 operator 刪除,並無限期地留在叢集中。在此版本中,我們將預設值更改為 True。
關於 KubernetesPodOperator 和 PodLauncher 更改的說明¶
警告
KubernetesPodOperator 和 PodLauncher 中的許多方法已被重新命名。如果您曾對 KubernetesPodOperator 進行子類化,則需要更新您的子類以反映新的結構。此外,PodStatus 列舉已重新命名為 PodPhase。
概覽¶
一般來說,如果您沒有對 KubernetesPodOperator 進行子類化,並且沒有直接使用 PodLauncher 類,那麼您無需擔心此更改。但是,如果您曾對 KubernetesPodOperator 進行子類化,以下是本版本更改的一些說明。
重構的主要目標之一是清晰地分離“獲取或建立 pod”和“等待 pod 完成”階段。以前,“等待 pod 完成”邏輯的呼叫方式取決於 operator 是“附加到現有 pod”(例如,在 worker 失敗後)還是“建立新 pod”,這導致了一些程式碼重複和邏輯巢狀。透過此重構,我們將“獲取或建立”步驟封裝到方法 KubernetesPodOperator.get_or_create_pod 中,並將監控和 XCom 邏輯提升到 execute 的頂層,因為對於“附加”pod 和“新”pod 而言,這部分邏輯是相同的。
KubernetesPodOperator.get_or_create_pod 首先嚐試使用任務例項特有的標籤查詢現有 pod(參見 KubernetesPodOperator.find_pod)。如果不存在,它會 建立 一個 pod <~.PodManager.create_pod>。
執行的“等待”部分有三個元件。第一步是等待 pod 離開 Pending 階段(~.KubernetesPodOperator.await_pod_start)。接下來,如果配置為跟蹤,operator 將跟蹤基礎容器日誌並將這些日誌轉發到任務 logger,直到 base 容器完成。如果未配置為收集日誌,operator 將轉而執行 KubernetesPodOperator.await_container_completion。無論哪種方式,我們都必須在收集 xcom 之前等待容器完成。在(可選地)從基礎容器中提取 xcom 值後,我們 等待 pod 完成 <~.PodManager.await_pod_completion>。
以前,根據 pod 是“重新附加到”(例如,在 worker 失敗後)還是全新建立的,等待邏輯可能發生在 handle_pod_overlap 或 create_new_pod_for_operator 中。
在 pod 終止後,我們根據 pod 是否成功終止執行不同的清理任務。
如果 pod 未成功 終止,我們嘗試記錄 pod 事件(PodLauncher.read_pod_events>)。此外,如果任務配置為在終止後不刪除 pod,我們會應用一個標籤(KubernetesPodOperator.patch_already_checked>),表明 pod 失敗,並且在重試時不應“重新附加”。如果任務配置為刪除其 pod,我們會刪除它(KubernetesPodOperator.process_pod_deletion>)。最後,我們會引發一個 AirflowException 以使任務例項失敗。
如果 pod 成功終止,我們會刪除 pod(KubernetesPodOperator.process_pod_deletion>)(如果配置為刪除 pod)並推送 XCom(如果配置為推送 XCom)。
方法重新命名、重構和刪除的詳細資訊¶
在 KubernetesPodOperator 中
方法
create_pod_launcher被轉換為快取屬性pod_managerk8s
CoreV1Api客戶端的構建現在封裝在快取屬性client中搜尋現有 pod(例如,在 airflow worker 失敗後)的邏輯從
execute中移出,並移至方法find_pod中。方法
handle_pod_overlap已被移除。以前,它會監控一個“找到的”pod 直到完成。透過此更改,pod 監控(和日誌跟蹤)直接從execute中協調,無論是“找到的”pod 還是“新”pod,邏輯都是相同的。參見方法await_pod_start,follow_container_logs,await_container_completion和await_pod_completion。方法
create_pod_request_obj已重新命名為build_pod_request_obj。它現在接受引數context以新增 TI 特定的 pod 標籤;以前它們是在返回後新增的。方法
create_labels_for_pod已重新命名為_get_ti_pod_labels。此方法不返回所有標籤,而只返回 TI 特定的標籤。我們還添加了引數include_try_number以控制此標籤的包含,而不是以後可能將其過濾掉。方法
_get_pod_identifying_label_string已重新命名為_build_find_pod_label_selector方法
_try_numbers_match已被移除。方法
create_new_pod_for_operator已被移除。以前它會修改self.pod上的標籤,啟動 pod,監控 pod 直到完成等。現在此邏輯部分由get_or_create_pod處理,必要時將建立新 pod。監控等現在直接從execute中協調。再次參見對方法await_pod_start,follow_container_logs,await_container_completion和await_pod_completion的呼叫。
在類 PodManager (原 PodLauncher) 中
方法
start_pod已被移除並拆分為兩個方法:create_pod和await_pod_start。方法
monitor_pod已被移除並拆分為方法follow_container_logs,await_container_completion,await_pod_completion方法
pod_not_started,pod_is_running,process_status, 和_task_status已被移除。這些方法由於將 podphase對映到任務例項狀態的方式而需要;但我們不再進行這種對映,而是直接處理 pod 階段而無需轉換。方法
_extract_xcom已重新命名為extract_xcom。方法
read_pod_logs現在接受 kwargcontainer_name
pod_manager.py (原 pod_launcher.py) 中的其他更改
類
pod_launcher.PodLauncher重新命名為pod_manager.PodManager類列舉
PodStatus重新命名為PodPhase,並且值不再是小寫。airflow.settings.pod_mutation_hook不再在cncf.kubernetes.utils.pod_manager.PodManager.run_pod_async中呼叫。對於KubernetesPodOperator,修改現在發生在build_pod_request_obj中。引數
is_delete_operator_pod的預設值更改為True,以便任務完成後刪除 pod,而不是使其累積。實踐中,似乎更常見的是僅出於除錯目的暫時停用 pod 刪除,因此刪除 pod 是更合理的預設值。
新功能¶
為 KubernetesHook 新增引數 config, in_cluster, 和 cluster_context (#19695)為 KubernetesPodOperator 實現 dry_run (#20573)澄清 K8s providers 中 ''build_pod_request_obj'' 的文件字串 (#20574)
Bug 修復¶
修復 Volume/VolumeMount KPO DeprecationWarning (#19726)
2.2.0¶
新功能¶
在 KPO 中新增 namespace 作為模板欄位。 (#19718)將名稱隨機化與名稱 kwarg 解耦 (#19398)
Bug 修復¶
在過濾前檢查 event.status.container_statuses (#19713)在 KubernetesHook 中將 'extra' 引數合併到 None (#19694)在 KubernetesPodOperator 中更改為正確的型別 (#19459)
2.1.0¶
新功能¶
為 PodLauncher 新增更多型別提示 (#18928)為 PodLauncher 超時錯誤新增更多資訊 (#17953)
2.0.3¶
Bug 修復¶
修復 KubernetesPodOperator 在不刪除 pod 時的重新附加問題 (#18070)使 Kubernetes job 描述適合在一條日誌行中顯示 (#18377)如果讀取日誌失敗,不要使 KubernetesPodOperator 任務失敗 (#17649)
2.0.2¶
Bug 修復¶
修復使用 XCom 與 ''KubernetesPodOperator'' 的問題 (#17760)在 providers manager 中延遲匯入 Hooks (#17682)
2.0.1¶
新功能¶
啟用在 Kubernetes Pod Operator 中使用自定義 pod launcher (#16945)
Bug 修復¶
BugFix: 在 template_field 中使用 'json' 字串導致 K8s Operators 出現問題 (#16930)
2.0.0¶
不相容變更¶
自動應用 apply_default 裝飾器 (#15667)
警告
由於移除了 apply_default 裝飾器,此版本的 provider 要求 Airflow 2.1.0+。如果您的 Airflow 版本 < 2.1.0,並且您想安裝此 provider 版本,請首先將 Airflow 升級到至少 2.1.0 版本。否則,您的 Airflow 包版本將自動升級,您將需要手動執行 airflow upgrade db 以完成遷移。
新功能¶
為 'KubernetesPodOperator' 新增 'pod-template-file' jinja 模板支援 (#15942)為 KubernetesPodOperator 將 pod 名稱儲存到 xcom (#15755)
Bug 修復¶
Bug 修復 由於空的 Affinity K8S 物件導致 Pod-Template Affinity 被忽略 (#15787)Bug 修復 Pod Template File Values 被忽略 (#16095)修復在 KPO 中解析錯誤日誌的問題 (#15638)修復當 'is_delete_operator_pod=True' 時 KubernetesPodOperator 最終狀態呼叫不成功的問題 (#15490)
1.2.0¶
新功能¶
要求 KubernetesPodOperator 使用 'name' (#15373)將 KPO node_selectors 警告更改為正確的 deprecationwarning (#15507)
Bug 修復¶
修復使用 XCom 與 KubernetesPodOperator 時的超時問題 (#15388)修復 ''KubernetesPodOperator'' 建立的 pod 上的標籤問題 (#15492)
1.1.0¶
新功能¶
將 Kubernetes pod_launcher 與 core airflow 分離 (#15165)為 Spark operators 新增指定 api group 和 version 的能力 (#14898)使用可用的 libyaml C 庫。 (#14577)
1.0.2¶
Bug 修復¶
允許在使用 pod_template 時在 KubernetesPodOperator 中覆蓋 pod 名稱。 (#14186)允許 KPO 使用者 *實際* 模板化環境變數 (#14083)
1.0.1¶
更新了文件和 readme 檔案。
Bug 修復¶
正確地在 KubernetesPodOperator 中傳遞 image_pull_policy (#13289)
1.0.0¶
provider 的初始版本。