apache-airflow-providers-cncf-kubernetes
更新日誌¶
10.1.0¶
注意
如 Apache Airflow 提供者支援政策 中所述,此提供者版本僅適用於 Airflow 2.9+。
功能¶
新增 KubernetesPodOperator 中 init 容器 的 日誌記錄 支援 (#42498) (#43853)
實作 KubernetesInstallKueueOperator + (#44568)
支援 KubernetesPodOperator 的 日誌行 分組 (#44428)
錯誤修正¶
比較 k8s 執行器 與 別名, 而非 完整的 ExecutorName repr (#44967)
修正 KubernetesExecutor 失敗 問題 (#44931)
其他¶
移除 對 AIRFLOW_V_2_9_PLUS 的 參考 (#44987)
將 提供者中 最低 Airflow 版本 提升 至 Airflow 2.9.0 (#44956)
在 提供者中 檢查 Airflow 版本 的一致 方式 (#44686)
修正 yoda-conditions (#44466)
10.0.1¶
錯誤修正¶
錯誤修正 KubernetesJobOperator.on_kill() ,從 k8s job client 方法 'delete_namespaced_job' 調用中 移除 意外的 'job' 參數 (#44131)
重新排隊 當 tassk 停留在 排隊中 時 (#43520)
其他¶
在 程式碼庫中 將 execution_date 重新命名為 logical_date (#43902)
10.0.0¶
重大變更¶
警告
所有已棄用的類別、參數和功能都已從 Kubernetes 提供者套件中移除。以下是引入的重大變更
- 輔助程式
從
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
。
- 運算子
移除
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
。
- 觸發器
從
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)
錯誤修正¶
新增 random_name_suffix 至 SparkKubernetesOperator (#43847)
終止 kubernetes 監看 以防 不明 錯誤 發生 (#43645)
更新 'find_pod' 函數 的 'namespace' 優先順序 (#43762)
其他¶
AIP-72: 移除 DAG 封存 (#43667)
9.0.1¶
錯誤修正¶
(fix): 在 kubernetes 執行器中 重新排程 其他 執行器的 HybridExecutor 任務 (#43003)
(fix): 使用 instance base_container_name 在 trigger_reentry 上 擷取 日誌 (#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 執行器 cleanup_stuck_queued_tasks 最佳化 (#41220)
錯誤修正¶
所有 執行器 都應 繼承自 BaseExecutor (#41904)
修正 在 擷取 日誌時 Pod 失敗時 標記為 成功 (#42815)
修正 SparkKubernetesOperator spark 名稱。 (#42427)
如果 重新整理 憑證, KubernetesPodOperator 永遠不會 停止 (#42361)
重新建構 'await_xcom_sidecar_container_start' 方法。 (#42504)
KubernetesHook kube_config 額外參數 可以 接受 dict (#41413)
其他¶
捨棄 python3.8 支援 核心 和 提供者 (#42766)
從 k8s 執行器 Pod 選取器 中 移除 airflow_version (#42751)
8.4.2¶
其他¶
已移除 已棄用的 組態 (#42129)
AsyncKubernetesHook 中的 文件字串 更新 (#41929)
從 Kubernetes Provider 移除 Airflow 2.7 支援 (#41746)
從 提供者中 移除 已棄用的 soft_fail (#41710)
8.4.1¶
錯誤修正¶
fix: 在 watcher 收到 原因為 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 提供者支援政策 中所述,此提供者版本僅適用於 Airflow 2.8+。
其他¶
將 提供者中 最低 Airflow 版本 提升 至 Airflow 2.8.0 (#41396)
正確地 描述 文件字串中的 行為 (#41458)
移除 已棄用的 SubDags (#41390)
重新排序 'SparkKubernetesOperator' 的 文件字串 (#41372)
8.3.4¶
錯誤修正¶
將 kube/config 檔案 的 內容 作為 字典 傳遞給 觸發器 (#41178)
修正 kubernetes 執行器中 令人困惑的 日誌訊息 (#41035)
修正 採用 已完成 Pod 時的 ApiException 處理 (#41109)
8.3.2¶
錯誤修正¶
修正 由於 叢集中 過多 已完成的 Pod 而導致 Scheduler 重新啟動 (#40183)
其他¶
將 最低 kubernetes lib 版本 提升 至 kubernetes 29.0.0 (#40253)
8.3.1¶
錯誤修正¶
修正 KubernetesPodTrigger 因逾時而 導致 執行中 Pod 失敗 的問題 (#40019)
在 權杖過期時, 也 在記錄時, 重新整理 KubernetesPodOperator 上的 屬性 (#39789)
修正 同步模式的 reattach_on_restart 參數 (#39329)
避免 在 kubernetes 執行器 重試時 重設 已採用的 任務實例 (#39406)
其他¶
包含 Pod 擱置 事件的 致命 原因 (#39924)
8.3.0¶
功能¶
在 k8s 執行器中 監看 Pod 事件時 新增 逾時 (#39551)
為 KubernetesCreateResourceOperator 和 KubernetesJobOperator 新增 重試邏輯 (#39201)
錯誤修正¶
修正 'cncf.kubernetes' 提供者中 已棄用的 呼叫 (#39381)
處理 Pod 成功完成時 取得 日誌的 例外狀況 (#39296)
修正 read_namespaced_pod_log 呼叫中 錯誤的 引數 (#39874)
其他¶
將 Kubernetes cli 移至 提供者 套件 (#39587)
移除 2.7.0 的 相容性 程式碼 - 現在是 最低 Airflow 版本 (#39591)
簡化 'airflow_version' 匯入 (#39497)
在 KubernetesPodOperator._write_logs 中, 將 pod_manager.read_pod_logs 取代為 client.read_namespaced_pod_log (#39112)
在 KPO 中 新增 警告訊息, 以警告 一秒間隔 日誌重複 問題 (#39861)
8.2.0¶
注意
如 Apache Airflow 提供者支援政策 中所述,此提供者版本僅適用於 Airflow 2.7+。
功能¶
在 KPO 觸發器中, 在容器尚未完成之前, 新增 遺失的 資訊性 日誌 (#37546)
錯誤修正¶
修正 k8s Pod 運算子的 樣板化 環境變數 (#39139)
修正 使用 initContainers 時的 SparkKubernetesOperator (#38119)
在 k8s 因權杖過期而 失敗時, 重新整理 KubernetesPodOperator 上的 屬性 (#39325)
其他¶
將 提供者中 最低 Airflow 版本 提升 至 Airflow 2.7.0 (#39240)
從 cncf 提供者中 移除 不必要的 驗證。 (#39238)
將 已棄用 pod_generator 中的 airflow 匯入 移至 本機 (#39062)
KPO xcom 側車 PodDefault 用法 (#38951)
8.1.0¶
功能¶
KPO 在 終止 步驟中 新增 追蹤 日誌 (#38081)
新增 GKECreateCustomResourceOperator 和 GKEDeleteCustomResourceOperator 運算子 (#37616)
為 KubernetesJobOperator 實作 可延遲 模式 (#38251)
建立 KubernetesPatchJobOperator 運算子 (#38146)
為 KubernetesDeleteJobOperator 實作 delete_on_status 參數 (#38458)
為 GKEStartJobOperator 實作 可延遲 模式 (#38454)
使用 startup_check_interval_seconds 而非 poll_interval 來 檢查 啟動時的 Pod (#38075)
為 KubernetesJobOperator 實作 wait_until_job_complete 參數 (#37998)
錯誤修正¶
使用 SIGINT 訊號編號 而非 訊號名稱 (#37905)
修正 從 驅動程式擷取 spark 運算子 日誌 (#38106)
修正 自訂 啟動器的 動態 配置 規格 處理 (#38223)
修正 案例: 如果 'SparkKubernetesOperator.application_file' 是 樣板化 檔案 (#38035)
fix: 減少 Pod 事件的 不相關錯誤 日誌。 (#37944)
其他¶
新增 GKEListJobsOperator 和 GKEDescribeJobOperator (#37598)
移除 在 提供者 k8s pod.py 中 用於 命名 Pod 的 已棄用 函數 用法 (#38638)
建立 DeleteKubernetesJobOperator 和 GKEDeleteJobOperator 運算子 (#37793)
重構 GKE 掛鉤 (#38404)
8.0.1¶
錯誤修正¶
在 工作程式 Pod 具有 致命 容器狀態時, 立即 使任務 失敗 (#37670)
在 Pod 建立失敗時, 略過 Pod 清理 (#37671)
其他¶
避免 不建議使用的 記錄 用法 (#37792)
將 執行器 文件 遷移到 各自的 提供者 (#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
設定為任何正整數。
修正: 在 Pod 啟動錯誤的情況下, 任務 永遠停留在 排隊 狀態 (#36882)
功能¶
在 KubernetesPodOperator 中 新增 logging_interval 以定期記錄 容器 日誌 (#37279)
建立 GKEStartJobOperator 和 KubernetesJobOperator (#36847)
錯誤修正¶
修正 python_kubernetes_script 的 偶爾 attr-undefined 問題 (#37318)
修正 具有 do_xcom_push 的可延遲 任務上的 KPO 掛起 問題 (#37300)
修正 呈現 'SparkKubernetesOperator.template_body' 的問題 (#37271)
修正 'KubernetesPodOperator' 中 '__init__' 的 樣板欄位 指派 (#37010)
KPO 維護 execute_complete 和 觸發器執行 方法的 回溯相容性 (#37454)
修正 KPO 任務 在 Pod 未能在指定的 逾時時間內 啟動時 掛起 的問題 (#37514)
修正 KPO 過早退出時的 KeyError 問題 (#37508)
其他¶
feat: 將所有 類別、 函數、 方法 棄用 切換為 裝飾器 (#36876)
Kubernetes 版本 提升 (#37040)
新增 GKEStartKueueInsideClusterOperator (#37072)
將 Kubernetes ApiException 狀態碼 轉換為 字串, 以確保 正確檢查 (#37405)
7.14.0¶
功能¶
新增 SparkKubernetesOperator crd 實作 (#22253)
KubernetesPodOperator 中 configmap 的 樣板欄位 支援 (#36922)
為 KubernetesPodOperator 建立 通用 callbacks 類別 (#35714)
錯誤修正¶
fix: Avoid retrying after KubernetesPodOperator has been marked as failed (#36749)
Fix stacklevel in warnings.warn into the providers (#36831)
Increase tenacity wait in read_pod_logs (#36955)
36888-Fix k8 configmap issue in 7.14.0rc1 (#37001)
其他雜項¶
Change field type for kube_config (#36752)
Changing wording in docstring for CNCF provider (#36547)
Add support of Pendulum 3 (#36281)
7.13.0¶
功能特色¶
Allow changing of 'config_file' in 'KubernetesResourceBaseOperator' (#36397)
其他雜項¶
Add reminder about update stub file in case of change KubernetesPodOperator's arguments (#36434)
Don't get pod status in KubernetesPodOperator if skip_on_exit_code is not set (#36355)
Remove deprecated input parameters in the k8s pod operator (#36433)
Delete get_python_source from Kubernetes decorator after bumping min airflow version to 2.6.0 (#36426)
Remove duplicated methods in K8S pod operator module and import them from helper function (#36427)
7.12.0¶
功能特色¶
Add _request_timeout to KPO log fetch calls (#36297)
Add 'pod_template_dict' field to 'KubernetesPodOperator' (#33174)
KubernetesPodTrigger: add exception stack trace in TriggerEvent (#35716)
Make pod_name length equal to HOST_NAME_MAX (#36332)
Move KubernetesPodTrigger hook to a cached property (#36290)
錯誤修正¶
Kubernetes executor running slots leak fix (#36240)
Follow BaseHook connection fields method signature in child classes (#36086)
list pods performance optimization (#36092)
7.11.0¶
注意
此供應商版本僅適用於 Airflow 2.6+,詳情請參閱 Apache Airflow 供應商支援政策。
錯誤修正¶
fix: KPO typing env_vars (#36048)
Stop converting state to TaskInstanceState when it's None (#35891)
Feature pass dictionary configuration in application_file in SparkKubernetesOperator (#35848)
其他雜項¶
Bump minimum Airflow version in providers to Airflow 2.6.0 (#36017)
7.10.0¶
功能特色¶
Add annotations field into in KubernetesPodOperator (#35641)
Add custom_resource_definition to KubernetesResourceBaseOperator (#35600)
錯誤修正¶
Revert Remove PodLoggingStatus object #35422 (#35822)
Fix K8S executor override config using pod_override_object (#35185)
Fix and reapply templates for provider documentation (#35686)
其他雜項¶
Remove inconsequential code bits in KPO logging (#35416)
Remove non existing params from 'KubernetesResourceBaseOperator' docstring
KubernetesExecutor observability Improvements (#35579)
7.9.0¶
功能特色¶
Add verificationy that provider docs are as expected (#35424)
Add startup_check_interval_seconds to PodManager's await_pod_start (#34231)
錯誤修正¶
Remove before_log in KPO retry and add traceback when interrupted (#35423)
Remove tenancity on KPO logs inner func consume_logs (#35504)
其他雜項¶
Simplify KPO multi container log reconciliation logic (#35450)
Remove PodLoggingStatus object (#35422)
Improve clear_not_launched_queued_tasks call duration (#34985)
Use constant for empty xcom result sentinel (#35451)
7.8.0¶
功能特色¶
Added to the rendering of KubernetesOperator V1VolumeMount, sub_path (#35129)
feat: add hostAliases to pod spec in KubernetesPodOperator (#35063)
錯誤修正¶
Replace blocking IO with async IO in AsyncKubernetesHook (#35162)
Consolidate the warning stacklevel in KubernetesPodTrigger (#35079)
7.7.0¶
注意
此供應商版本僅適用於 Airflow 2.5+,詳情請參閱 Apache Airflow 供應商支援政策。
錯誤修正¶
Fix parsing KubernetesPodOperator multiline logs (#34412)
Fix KubernetesPodTrigger startup timeout (#34579)
Fix Pod not being removed after istio-sidecar is removed (#34500)
Remove duplicated logs by reusing PodLogsConsumer (#34127)
其他雜項¶
Bump min airflow version of providers (#34728)
warn level for deprecated set to stacklevel 2 (#34530)
Use 'airflow.exceptions.AirflowException' in providers (#34511)
7.6.0¶
功能特色¶
Add 'progress_callback' parameter to 'KubernetesPodOperator' (#34153)
錯誤修正¶
Move definition of Pod*Exceptions to pod_generator (#34346)
Push to xcom before 'KubernetesPodOperator' deferral (#34209)
其他雜項¶
Refactor: Consolidate import textwrap in providers (#34220)
7.5.1¶
錯誤修正¶
fix(providers/spark-kubernetes): respect soft_fail argument when exception is raised (#34167)
Use 'cached_property' for hook in SparkKubernetesSensor (#34106)
Use cached property for hook in SparkKubernetesOperator (#34130)
其他雜項¶
Combine similar if logics in providers (#33987)
Remove useless string join from providers (#33968)
Refactor unneeded jumps in providers (#33833)
replace loop by any when looking for a positive value in providers (#33984)
Move the try outside the loop when this is possible in kubernetes provider (#33977)
Replace sequence concatenation by unpacking in Airflow providers (#33933)
Replace dict.items by values when key is not used in providers (#33939)
Refactor: Consolidate import datetime (#34110)
7.5.0¶
功能特色¶
Add istio test, use curl /quitquitquit to exit sidecar, and some othe… (#33306)
Add 'active_deadline_seconds' parameter to 'KubernetesPodOperator' (#33379)
Make cluster_context templated (#33604)
錯誤修正¶
Fix KubernetesPodOperator duplicating logs when interrupted (#33500)
Fix 2.7.0 db migration job errors (#33652)
Inspect container state rather than last_state when deciding whether to skip (#33702)
Fix kill istio proxy logic (#33779)
其他雜項¶
Introducing class constant to make worker pod log lines configurable (#33378)
Adding typing for KPO SCC objects (#33381)
Refactor: Remove useless str() calls (#33629)
Refactor: Improve detection of duplicates and list sorting (#33675)
Refactor Sqlalchemy queries to 2.0 style (Part 7) (#32883)
Consolidate import and usage of itertools (#33479)
Simplify conditions on len() in other providers (#33569)
Import utc from datetime and normalize its import (#33450)
Always use 'Literal' from 'typing_extensions' (#33794)
Use literal dict instead of calling dict() in providers (#33761)
Improve modules import in cncf.kubernetes probvider by move some of them into a type-checking block (#33781)
7.4.2¶
其他雜項¶
Add missing re2 dependency to cncf.kubernetes and celery providers (#33237)
Make the 'OnFinishAction' enum inherit from str to support passing it to 'KubernetesPodOperatpor' (#33228)
Refactor: Simplify code in providers/cncf (#33230)
Replace State by TaskInstanceState in Airflow executors (#32627)
7.4.1¶
錯誤修正¶
Fix waiting the base container when reading the logs of other containers (#33127)
Fix: Configurable Docker image of 'xcom_sidecar' (#32858)
Fix 'KubernetesPodOperator' sub classes default container_logs (#33090)
Consider custom pod labels on pod finding process on 'KubernetesPodOperator' (#33057)
其他雜項¶
add documentation generation for CLI commands from executors (#33081)
7.4.0¶
注意
此供應商版本是第一個將 Kubernetes Executor 和 Local Kubernetes Executor 從核心 apache-airflow
套件移至 cncf.kubernetes
供應商套件的版本。
功能特色¶
Move all k8S classes to cncf.kubernetes provider (#32767)
[AIP-51] Executors vending CLI commands (#29055)
Add 'termination_message_policy' parameter to 'KubernetesPodOperator' (#32885)
其他雜項¶
Update the watcher resource version in SparkK8SOp when it's too old (#32768)
Add deprecation info to the providers modules and classes docstring (#32536)
Raise original import error in CLI vending of executors (#32931)
7.3.0¶
功能特色¶
Logging from all containers in KubernetesOperatorPod (#31663)
錯誤修正¶
Fix async KPO by waiting pod termination in 'execute_complete' before cleanup (#32467)
7.2.0¶
功能特色¶
Add 'on_finish_action' to 'KubernetesPodOperator' (#30718)
錯誤修正¶
Fix KubernetesPodOperator validate xcom json and add retries (#32113)
Fix 'KubernetesPodTrigger' waiting strategy (#31348)
fix spark-kubernetes-operator compatibality (#31798)
其他雜項¶
Add default_deferrable config (#31712)
7.1.0¶
注意
此版本已移除對 Python 3.7 的支援
功能特色¶
KubernetesResourceOperator - KubernetesDeleteResourceOperator & KubernetesCreateResourceOperator (#29930)
add a return when the event is yielded in a loop to stop the execution (#31985)
Add possibility to disable logging the pod template in a case when task fails (#31595)
錯誤修正¶
Remove return statement after yield from triggers class (#31703)
Fix Fargate logging for AWS system tests (#31622)
其他雜項¶
Remove Python 3.7 support (#30963)
7.0.0¶
注意
此供應商版本僅適用於 Airflow 2.4+,詳情請參閱 Apache Airflow 供應商支援政策。
功能特色¶
注意
如果未定義 kubernetes_default
連線,則 KubernetesHook / KubernetesPodOperator 的行為將如同給定 conn_id=None
。這應能更輕鬆地減輕 6.0.0 中引入的重大變更
K8s hook should still work with missing default conn (#31187)
Add protocol to define methods relied upon by KubernetesPodOperator (#31298)
錯誤修正¶
Fix kubernetes task decorator pickle error (#31110)
其他雜項¶
Bump minimum Airflow version in providers (#30917)
Empty xcom result file log message more specific (#31228)
Add options to KubernetesPodOperator (#30992)
add missing read for K8S config file from conn in deferred 'KubernetesPodOperator' (#29498)
6.1.0¶
功能特色¶
Add multiple exit code handling in skip logic for 'DockerOperator' and 'KubernetesPodOperator' (#30769)
Skip KubernetesPodOperator task when it returns a provided exit code (#29000)
6.0.0¶
重大變更¶
預設在 KubernetesPodOperator
中使用 kubernetes_default
連線。
Use default connection id for KubernetesPodOperator (#28848)
功能特色¶
Allow to set limits for XCOM container (#28125)
5.3.0¶
功能特色¶
enhance spark_k8s_operator (#29977)
錯誤修正¶
Fix KubernetesPodOperator xcom push when 'get_logs=False' (#29052)
Fixed hanged KubernetesPodOperator (#28336)
其他雜項¶
Align cncf provider file names with AIP-21 (#29905)
Remove "boilerplate" from all taskflow decorators (#30118)
Ensure setup/teardown work on a previously decorated function (#30216)
5.2.2¶
錯誤修正¶
'KubernetesPodOperator._render_nested_template_fields' improved by changing the conditionals for a map (#29760)
5.2.0¶
功能特色¶
Add deferrable mode to ''KubernetesPodOperator'' (#29017)
Allow setting the name for the base container within K8s Pod Operator (#28808)
錯誤修正¶
Patch only single label when marking KPO checked (#29279)
5.1.0¶
功能¶
Add Flink on K8s Operator (#28512)
Add volume-related nested template fields for KPO (#27719)
Allow longer pod names for k8s executor / KPO (#27736)
Use labels instead of pod name for pod log read in k8s exec (#28546)
錯誤修正¶
Patch "checked" when pod not successful (#27845)
Keep pod name for k8s executor under 63 characters (#28237)
其他¶
Remove outdated compat imports/code from providers (#28507)
Restructure Docs (#27235)
5.0.0¶
注意
此 provider 版本僅適用於 Airflow 2.3+,如 Apache Airflow providers support policy 中所述。
重大變更¶
先前 KubernetesPodOperator 會考量 Airflow 設定檔 kubernetes
區段中的某些設定。此考量在 4.1.0 版本中已棄用,現在已移除。如果您先前依賴 Airflow 設定檔,並且希望用戶端產生具有非預設設定,您將需要在 Airflow 連線中定義您的設定,並設定 KPO 使用該連線。有關詳細資訊,請參閱關於定義 Kubernetes Airflow 連線的 Kubernetes provider 文件。
移除在 KubernetesPodOperator
中以 dict 形式提供 resource
的支援。您應該使用包含 V1ResourceRequirements
的 container_resources
。
參數 node_selectors
已在 KubernetesPodOperator
中移除;請改用 node_selector
。
以下 KubernetesPodOperator 的向後相容性模組已被移除,您現在必須使用 Kubernetes 程式庫中的對應物件
airflow.kubernetes.backcompat.pod
airflow.kubernetes.backcompat.pod_runtime_info_env
airflow.kubernetes.backcompat.volume
airflow.kubernetes.backcompat.volume_mount
Remove deprecated backcompat objects for KPO (#27518)
Remove support for node_selectors param in KPO (#27515)
Remove unused backcompat method in k8s hook (#27490)
Drop support for providing ''resource'' as dict in ''KubernetesPodOperator'' (#27197)
Don't consider airflow core conf for KPO (#26849)
其他¶
Move min airflow version to 2.3.0 for all providers (#27196)
Use log.exception where more economical than log.error (#27517)
功能¶
KubernetesPodOperator 引數 name
現在為選用。先前,當未同時提供 pod 範本或完整 pod 規格時,name
是 KubernetesPodOperator 的必要引數。現在,如果未提供 name
,將會使用 task_id
。
KubernetesPodOperator 引數 namespace
現在為選用。如果未透過 KPO 參數或 pod 範本檔案或完整 pod 規格提供,我們將檢查 Airflow 連線,然後如果在 k8s pod 中,嘗試從容器推斷命名空間,最後將使用 default
命名空間。
當使用 kubernetes
類型的 Airflow 連線時,如果在環境變數或密碼後端中定義連線,則不再需要為 “extra” 欄位加上 extra__kubernetes__
前綴。如果 extra
包含重複的欄位(一個帶有前綴,一個沒有),則將使用未加前綴的欄位。
Remove extra__kubernetes__ prefix from k8s hook extras (#27021)
Add container_resources as KubernetesPodOperator templatable (#27457)
add container_name option for SparkKubernetesSensor (#26560)
Allow xcom sidecar container image to be configurable in KPO (#26766)
Improve task_id to pod name conversion (#27524)
Make pod name optional in KubernetesPodOperator (#27120)
Make namespace optional for KPO (#27116)
Enable template rendering for env_vars field for the @task.kubernetes decorator (#27433)
錯誤修正¶
Fix KubernetesHook fail on an attribute absence (#25787)
Fix log message for kubernetes hooks (#26999)
KPO should use hook's get namespace method to get namespace (#27516)
新的棄用項目¶
- 在
KubernetesHook.get_namespace
中,如果已定義連線但未設定命名空間,我們 目前傳回 ‘default’;此行為已棄用 (#27202)。在下一個版本中,我們將傳回
None
。
- 在
Deprecate use of core get_kube_client in PodManager (#26848)
4.4.0¶
功能¶
feat(KubernetesPodOperator): Add support of container_security_context (#25530)
Add @task.kubernetes taskflow decorator (#25663)
pretty print KubernetesPodOperator rendered template env_vars (#25850)
錯誤修正¶
Avoid calculating all elements when one item is needed (#26377)
Wait for xcom sidecar container to start before sidecar exec (#25055)
4.3.0¶
功能¶
Improve taskflow type hints with ParamSpec (#25173)
錯誤修正¶
Fix xcom_sidecar stuck problem (#24993)
4.2.0¶
功能¶
Add 'airflow_kpo_in_cluster' label to KPO pods (#24658)
Use found pod for deletion in KubernetesPodOperator (#22092)
錯誤修正¶
Revert "Fix await_container_completion condition (#23883)" (#24474)
Update providers to use functools compat for ''cached_property'' (#24582)
其他¶
Rename 'resources' arg in Kub op to k8s_resources (#24673)
4.1.0¶
功能¶
先前,KubernetesPodOperator 依賴核心 Airflow 設定(即 Kubernetes executor 的設定)來取得用戶端產生中使用的某些設定。現在 KubernetesPodOperator 使用 KubernetesHook,並且正式棄用對核心 k8s 設定的考量。
如果您正在使用 Airflow 設定設定(例如,與 operator 參數相對)來設定 Kubernetes 用戶端,那麼在下一個主要版本之前,您將需要新增 Airflow 連線並設定您的 KPO 任務以使用該連線。
Use KubernetesHook to create api client in KubernetesPodOperator (#20578)
[FEATURE] KPO use K8S hook (#22086)
Add param docs to KubernetesHook and KubernetesPodOperator (#23955) (#24054)
錯誤修正¶
Use "remote" pod when patching KPO pod as "checked" (#23676)
Don't use the root logger in KPO _suppress function (#23835)
Fix await_container_completion condition (#23883)
其他¶
Migrate Cncf.Kubernetes example DAGs to new design #22441 (#24132)
Clean up f-strings in logging calls (#23597)
4.0.2¶
錯誤修正¶
Fix: Exception when parsing log #20966 (#23301)
Fixed Kubernetes Operator large xcom content Defect (#23490)
Clarify 'reattach_on_restart' behavior (#23377)
4.0.1¶
錯誤修正¶
Add k8s container's error message in airflow exception (#22871)
KubernetesHook should try incluster first when not otherwise configured (#23126)
KubernetesPodOperator should patch "already checked" always (#22734)
Delete old Spark Application in SparkKubernetesOperator (#21092)
Cleanup dup code now that k8s provider requires 2.3.0+ (#22845)
Fix ''KubernetesPodOperator'' with 'KubernetesExecutor'' on 2.3.0 (#23371)
Fix KPO to have hyphen instead of period (#22982)
Fix new MyPy errors in main (#22884)
4.0.0¶
重大變更¶
provider 4.0.0 版本僅適用於 Airflow 2.3+。如果您想使用 provider 4.* 系列版本中的功能或修正,請將 Airflow 升級至 2.3 版本。
不相容的主要原因是使用了最新的 Kubernetes 程式庫。cncf.kubernetes
provider 需要比 Airflow 2.1 和 2.2 用於 Kubernetes Executor 的版本更新的程式庫,這使得該 provider 與這些 Airflow 版本不相容。
功能¶
Log traceback only on ''DEBUG'' for KPO logs read interruption (#22595)
Update our approach for executor-bound dependencies (#22573)
Optionally not follow logs in KPO pod_manager (#22412)
錯誤修正¶
Stop crashing when empty logs are received from kubernetes client (#22566)
3.1.2 (已撤回)¶
警告
此版本已被撤回,原因:在 Airflow 2.1, 2.2 上安裝允許安裝不受支援的 kubernetes 程式庫 > 11.0.0
錯誤修正¶
Fix mistakenly added install_requires for all providers (#22382)
Fix "run_id" k8s and elasticsearch compatibility with Airflow 2.1 (#22385)
其他¶
Remove RefreshConfiguration workaround for K8s token refreshing (#20759)
3.1.1 (已撤回)¶
警告
此版本已被撤回,原因:在 Airflow 2.1, 2.2 上安裝允許安裝不受支援的 kubernetes 程式庫 > 11.0.0
其他¶
Add Trove classifiers in PyPI (Framework :: Apache Airflow :: Provider)
3.1.0 (已撤回)¶
警告
此版本已被撤回,原因:在 Airflow 2.1, 2.2 上安裝允許安裝不受支援的 kubernetes 程式庫 > 11.0.0
功能¶
Add map_index label to mapped KubernetesPodOperator (#21916)
Change KubernetesPodOperator labels from execution_date to run_id (#21960)
其他¶
Support for Python 3.10
Fix Kubernetes example with wrong operator casing (#21898)
Remove types from KPO docstring (#21826)
3.0.2 (已撤回)¶
警告
此版本已被撤回,原因:在 Airflow 2.1, 2.2 上安裝允許安裝不受支援的 kubernetes 程式庫 > 11.0.0
錯誤修正¶
Add missed deprecations for cncf (#20031)
3.0.1 (已撤回)¶
警告
此版本已被撤回,原因:在 Airflow 2.1, 2.2 上安裝允許安裝不受支援的 kubernetes 程式庫 > 11.0.0
其他¶
Update Kubernetes library version (#18797)
3.0.0¶
重大變更¶
Parameter is_delete_operator_pod default is changed to True (#20575)
Simplify KubernetesPodOperator (#19572)
Move pod_mutation_hook call from PodManager to KubernetesPodOperator (#20596)
Rename ''PodLauncher'' to ''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
)。如果不存在,則會 creates a pod <~.PodManager.create_pod>
。
執行的 “等待” 部分有三個組成部分。第一步是等待 pod 離開 Pending
階段 (~.KubernetesPodOperator.await_pod_start
)。接下來,如果設定為執行此操作,operator 將追蹤基礎容器日誌,並將這些日誌轉發到任務記錄器,直到 base
容器完成。如果未設定為收集日誌,operator 將改為 KubernetesPodOperator.await_container_completion
,無論哪種方式,我們都必須等待容器完成才能收集 xcom。在(可選地)從基礎容器中提取 xcom 值後,我們 await pod completion <~.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_manager
k8s
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
,mutation 現在發生在build_pod_request_obj
中。參數
is_delete_operator_pod
的預設值已變更為True
,以便在任務完成後刪除 Pod,而不會累積。實際上,為了除錯目的而暫時停用 Pod 刪除似乎更常見,因此 Pod 刪除是更合理的預設值。
功能¶
新增 params config、in_cluster 和 cluster_context 參數至 KubernetesHook 中 (#19695)
為 KubernetesPodOperator 實作 dry_run 功能 (#20573)
釐清 K8s 供應商中 ''build_pod_request_obj'' 的 docstring (#20574)
錯誤修正¶
修正 Volume/VolumeMount KPO 棄用警告 (#19726)
2.2.0¶
功能¶
在 KPO 中新增 namespace 作為範本欄位。 (#19718)
將名稱隨機化與名稱 kwarg 分離 (#19398)
錯誤修正¶
在篩選前檢查 event.status.container_statuses (#19713)
在 KubernetesHook 中將 'extra' 參數合併為 None (#19694)
在 KubernetesPodOperator 中變更為正確的型別 (#19459)
2.0.3¶
錯誤修正¶
修正當不刪除 Pod 時 KubernetesPodOperator 重新連接的問題 (#18070)
使 Kubernetes 任務描述符合單行日誌 (#18377)
如果日誌讀取失敗,則不要使 KubernetesPodOperator 任務失敗 (#17649)
2.0.1¶
功能¶
在 Kubernetes Pod Operator 中啟用使用自訂 pod launcher (#16945)
錯誤修正¶
錯誤修正:在 template_field 中使用 'json' 字串導致 K8s Operators 發生問題 (#16930)
2.0.0¶
重大變更¶
自動套用 apply_default 裝飾器 (#15667)
警告
由於移除了 apply_default 裝飾器,此供應商版本需要 Airflow 2.1.0+。如果您的 Airflow 版本低於 2.1.0,且您想要安裝此供應商版本,請先將 Airflow 升級至至少 2.1.0 版本。否則,您的 Airflow 套件版本將會自動升級,且您必須手動執行 airflow upgrade db
以完成遷移。
功能¶
新增 'KubernetesPodOperator' 'pod-template-file' jinja 範本支援 (#15942)
為 KubernetesPodOperator 將 Pod 名稱儲存至 xcom (#15755)
錯誤修正¶
錯誤修正:由於空的 Affinity K8S Object 而忽略 Pod-Template Affinity (#15787)
錯誤: Pod Template File 值被忽略 (#16095)
修正 KPO 中剖析錯誤日誌的問題 (#15638)
修正當 'is_delete_operator_pod=True' 時, KubernetesPodOperator final_state 呼叫不成功的問題 (#15490)
1.2.0¶
功能¶
要求 KubernetesPodOperator 必須提供 'name' (#15373)
將 KPO node_selectors 警告變更為正確的棄用警告 (#15507)
錯誤修正¶
修正搭配 KubernetesPodOperator 使用 XCom 時逾時的問題 (#15388)
修正 ''KubernetesPodOperator'' 建立的 Pod 上的標籤 (#15492)
1.1.0¶
功能¶
將 Kubernetes pod_launcher 從核心 airflow 中分離 (#15165)
新增為 Spark operators 指定 api group 和版本的 能力 (#14898)
在可用時使用 libyaml C 程式庫。 (#14577)
1.0.2¶
錯誤修正¶
如果使用 pod_template ,則允許在 KubernetesPodOperator 中覆寫 Pod 名稱。 (#14186)
允許 KPO 的使用者 *實際* 範本化環境變數 (#14083)
1.0.0¶
供應商的初始版本。