apache-airflow-providers-cncf-kubernetes
更新日志¶
10.1.0¶
注意
如 Apache Airflow 提供程序支持策略 中所述,此提供程序版本仅适用于 Airflow 2.9+。
功能¶
在 KubernetesPodOperator 中添加 对 初始化 容器 的 日志 记录 支持 (#42498) (#43853)
实现 KubernetesInstallKueueOperator + (#44568)
支持 KubernetesPodOperator 的 日志 行 分组 (#44428)
Bug 修复¶
将 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¶
Bug 修复¶
通过 从 k8s job 客户端 方法 'delete_namespaced_job' 调用 中 删除 意外的 'job' 参数, 修复 KubernetesJobOperator.on_kill() (#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)
Bug 修复¶
将 random_name_suffix 添加到 SparkKubernetesOperator (#43847)
在发生 未知 错误时 终止 kubernetes 监视 (#43645)
更新 'find_pod' 函数的 'namespace' 优先级 (#43762)
其他¶
AIP-72: 删除 DAG 序列化 (#43667)
9.0.1¶
Bug 修复¶
(修复): 在 kubernetes 执行器中 重新调度其他 执行器的 HybridExecutor 任务 (#43003)
(修复): 使用 实例 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)
Bug 修复¶
所有 执行器 都应该 继承自 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 中的 docstring 更新 (#41929)
从 Kubernetes Provider 中 删除 Airflow 2.7 支持 (#41746)
从 提供程序 中删除 已弃用的 soft_fail (#41710)
8.4.1¶
Bug 修复¶
修复: 如果 观察器 接收到 reason 为 ProviderFailed 的 事件 ,则 'KubernetesExecutor' 会使任务失败 (#41186)
修复: KubernetesJobOperator 的 'do_xcom_push' 和 'get_logs' 功能 (#40814)
修复: '_is_in_cluster' 设置为 False 时 'KubernetesHook' 加载 配置文件 的问题 (#41464)
修复: 'CeleryKubernetesExecutor' 和 'LocalKubernetesExecutor' 中缺少 'slots_occupied' 的问题 (#41602)
8.4.0¶
注意
如Apache Airflow 提供程序支持策略中所述,此版本的提供程序仅适用于 Airflow 2.8+。
其他¶
将 提供程序中的 最低 Airflow 版本 提升到 Airflow 2.8.0 (#41396)
正确地 描述 docstring 中的行为 (#41458)
删除 已弃用的 SubDags (#41390)
重新排列 'SparkKubernetesOperator' 的 docstring (#41372)
8.3.4¶
Bug 修复¶
将 kube/config 文件的 内容 作为 字典 传递给 触发器 (#41178)
修复 kubernetes 执行器 中令人困惑的 日志消息 (#41035)
修复 采用已完成 的 Pod 时的 ApiException 处理 (#41109)
8.3.2¶
Bug 修复¶
修复 由于集群中 完成的 Pod 过多而导致 调度程序 重新启动的问题 (#40183)
其他¶
将 最低 kubernetes 库 版本 提升到 kubernetes 29.0.0 (#40253)
8.3.1¶
Bug 修复¶
修复了 KubernetesPodTrigger 因超时而导致运行中的 Pod 失败的问题 (#40019)
在 令牌过期时 ,在 KubernetesPodOperator 上刷新属性, 包括在记录日志时 (#39789)
修复 同步模式 的 reattach_on_restart 参数 (#39329)
避免 在 kubernetes 执行器 重试时 重置 已采用的任务 实例 (#39406)
其他¶
包含 Pod pending 事件 的 致命 原因 (#39924)
8.3.0¶
功能¶
在 k8s 执行器中观看 Pod 事件时添加 超时 (#39551)
为 KubernetesCreateResourceOperator 和 KubernetesJobOperator 添加重试逻辑 (#39201)
Bug 修复¶
修复 'cncf.kubernetes' 提供程序中已弃用的调用 (#39381)
处理 在 Pod 成功完成时 获取日志时 发生的异常 (#39296)
修复 read_namespaced_pod_log 调用中的错误参数 (#39874)
其他¶
将 Kubernetes cli 移动到 provider 包 (#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¶
注意
此 provider 版本仅适用于 Airflow 2.7+,如 Apache Airflow providers 支持策略中所述。
新特性¶
在 KPO 触发器中添加缺失的信息性日志,直到容器完成 (#37546)
Bug 修复¶
修复 k8s pod operator 的模板化环境变量 (#39139)
修复 使用 initContainers 时的 SparkKubernetesOperator (#38119)
当 k8s 因令牌过期而失败时,刷新 KubernetesPodOperator 的属性 (#39325)
其他¶
将 providers 中的 最低 Airflow 版本提升至 Airflow 2.7.0 (#39240)
从 cncf provider 中删除不必要的验证。 (#39238)
将 已弃用的 pod_generator 中的 airflow 导入移动到本地 (#39062)
KPO xcom sidecar PodDefault 用法 (#38951)
8.1.0¶
新特性¶
KPO 在终止步骤中添加跟踪日志 (#38081)
添加 GKECreateCustomResourceOperator 和 GKEDeleteCustomResourceOperator operator (#37616)
为 KubernetesJobOperator 实现可延期模式 (#38251)
创建 KubernetesPatchJobOperator operator (#38146)
为 KubernetesDeleteJobOperator 实现 delete_on_status 参数 (#38458)
为 GKEStartJobOperator 实现可延期模式 (#38454)
在启动时,使用 startup_check_interval_seconds 而不是 poll_interval 来检查 pod (#38075)
为 KubernetesJobOperator 实现 wait_until_job_complete 参数 (#37998)
Bug 修复¶
使用 SIGINT 信号编号而不是信号名称 (#37905)
修复从驱动程序检索 spark operator 日志的问题 (#38106)
修复自定义启动器动态分配规范的处理 (#38223)
修复 'SparkKubernetesOperator.application_file' 是模板文件的情况 (#38035)
修复: 减少 pod 事件的不相关错误日志。 (#37944)
其他¶
添加 GKEListJobsOperator 和 GKEDescribeJobOperator (#37598)
在 provider k8s pod.py 中,移除了已弃用的 pod 命名函数的使用 (#38638)
创建 DeleteKubernetesJobOperator 和 GKEDeleteJobOperator operator (#37793)
重构 GKE 钩子 (#38404)
8.0.1¶
Bug 修复¶
在工作节点 pod 出现致命容器状态时,立即失败任务 (#37670)
在 pod 创建失败的情况下,跳过 pod 清理 (#37671)
其他¶
避免不推荐的日志使用 (#37792)
将执行器文档迁移到各自的 providers (#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)
Bug 修复¶
修复 python_kubernetes_script 偶尔出现的 attr-undefined 问题 (#37318)
修复 带有 do_xcom_push 的可延期任务的 KPO 挂起问题 (#37300)
修复 'SparkKubernetesOperator.template_body' 的渲染问题 (#37271)
修复 'KubernetesPodOperator' 中 '__init__' 中模板字段的赋值问题 (#37010)
KPO 保持 execute_complete 和 trigger 运行方法的向后兼容性 (#37454)
修复 KPO 任务在 pod 未能在指定超时时间内启动时挂起的问题 (#37514)
修复 KPO 过早退出时出现的 KeyError 问题 (#37508)
其他¶
功能: 将所有类、函数、方法弃用切换为装饰器 (#36876)
Kubernetes 版本升级 (#37040)
添加 GKEStartKueueInsideClusterOperator (#37072)
将 Kubernetes ApiException 状态代码转换为字符串,以确保正确检查 (#37405)
7.14.0¶
新特性¶
添加 SparkKubernetesOperator crd 实现 (#22253)
为 KubernetesPodOperator 中的 configmap 提供 模板 字段 支持 (#36922)
为 KubernetesPodOperator 创建一个 通用的 回调 类 (#35714)
Bug 修复¶
修复: 避免 在 KubernetesPodOperator 被标记为 失败 后 重试 (#36749)
修复 providers 中 warnings.warn 的 stacklevel (#36831)
增加 read_pod_logs 中的 tenacity 等待时间 (#36955)
36888-修复 7.14.0rc1 中的 k8 configmap 问题 (#37001)
其他¶
更改 kube_config 的 字段类型 (#36752)
更改 CNCF provider 的 文档字符串中的 措辞 (#36547)
添加 对 Pendulum 3 的支持 (#36281)
7.13.0¶
功能¶
允许 更改 'KubernetesResourceBaseOperator' 中的 'config_file' (#36397)
其他¶
如果 更改了 KubernetesPodOperator 的参数, 添加 关于 更新 存根文件 的提醒 (#36434)
如果 未设置 skip_on_exit_code,则不要 在 KubernetesPodOperator 中获取 pod 状态 (#36355)
删除 k8s pod operator 中已弃用的输入参数 (#36433)
在将 最小 airflow 版本 提升到 2.6.0 后, 从 Kubernetes 装饰器 中删除 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 移动到 缓存 属性 (#36290)
Bug 修复¶
Kubernetes 执行器 运行 插槽泄漏 修复 (#36240)
遵循 子类中的 BaseHook 连接字段 方法签名 (#36086)
列表 pod 性能优化 (#36092)
7.11.0¶
注意
正如Apache Airflow 提供商支持策略中所述,此提供商版本仅适用于 Airflow 2.6+。
Bug 修复¶
修复: KPO 类型 env_vars (#36048)
当 状态为 None 时,停止将其转换为 TaskInstanceState (#35891)
在 SparkKubernetesOperator 中, 在 application_file 中传递字典配置 的功能 (#35848)
其他¶
将 providers 中的 最低 Airflow 版本 提升到 Airflow 2.6.0 (#36017)
7.10.0¶
功能¶
在 KubernetesPodOperator 中添加 annotations 字段 (#35641)
向 KubernetesResourceBaseOperator 添加 custom_resource_definition (#35600)
Bug 修复¶
还原 删除 PodLoggingStatus 对象 #35422 (#35822)
修复 K8S 执行器 使用 pod_override_object 覆盖 配置 (#35185)
修复并重新应用提供程序文档的模板 (#35686)
其他¶
删除 KPO 日志记录中无关紧要的代码段 (#35416)
从 'KubernetesResourceBaseOperator' 文档字符串中删除不存在的参数
KubernetesExecutor 可观测性改进 (#35579)
7.9.0¶
功能¶
添加验证, 确保提供程序文档符合预期 (#35424)
向 PodManager 的 await_pod_start 添加 startup_check_interval_seconds (#34231)
Bug 修复¶
删除 KPO 重试中的 before_log,并在中断时添加 回溯信息 (#35423)
删除 KPO 日志 内部函数 consume_logs 的 tenancity (#35504)
其他¶
简化 KPO 多容器 日志协调逻辑 (#35450)
删除 PodLoggingStatus 对象 (#35422)
改进 clear_not_launched_queued_tasks 调用持续时间 (#34985)
为 空 xcom 结果 哨兵 使用常量 (#35451)
7.8.0¶
功能¶
添加到 KubernetesOperator V1VolumeMount 的渲染中, sub_path (#35129)
feat: 向 KubernetesPodOperator 中的 pod 规范添加 hostAliases (#35063)
Bug 修复¶
在AsyncKubernetesHook中将阻塞式IO替换为异步IO(#35162)
合并KubernetesPodTrigger中的警告堆栈级别(#35079)
7.7.0¶
注意
如Apache Airflow 提供程序支持策略中所述,此提供程序版本仅适用于 Airflow 2.5+。
错误修复¶
修复解析KubernetesPodOperator多行日志的问题(#34412)
修复KubernetesPodTrigger启动超时问题(#34579)
修复在istio-sidecar移除后Pod未被移除的问题(#34500)
通过重用PodLogsConsumer来移除重复日志(#34127)
其他¶
提升提供程序的最低airflow版本(#34728)
将已弃用设置的警告级别设置为堆栈级别2(#34530)
在提供程序中使用'airflow.exceptions.AirflowException'(#34511)
7.6.0¶
功能¶
向'KubernetesPodOperator'添加'progress_callback'参数(#34153)
错误修复¶
将Pod*Exceptions的定义移动到pod_generator(#34346)
在'KubernetesPodOperator'延期之前推送到xcom(#34209)
其他¶
重构:合并提供程序中的importtextwrap(#34220)
7.5.1¶
错误修复¶
修复(providers/spark-kubernetes):当引发异常时,遵守soft_fail参数(#34167)
在SparkKubernetesSensor中使用'cached_property'获取hook(#34106)
在SparkKubernetesOperator中使用缓存属性获取hook(#34130)
其他¶
合并提供程序中相似的if逻辑(#33987)
从提供程序中删除无用的字符串连接(#33968)
重构提供程序中不必要的跳转(#33833)
在提供程序中查找正值时,用any替换循环(#33984)
当可能时,将try移到kubernetes提供程序中的循环之外(#33977)
在Airflow提供程序中用解包替换序列连接(#33933)
当key在提供程序中未使用时,用values替换dict.items(#33939)
重构:合并importdatetime(#34110)
7.5.0¶
功能¶
添加istio测试,使用curl/quitquitquit退出sidecar,以及其他一些功能…(#33306)
向'KubernetesPodOperator'添加'active_deadline_seconds'参数(#33379)
使cluster_context可模板化(#33604)
错误修复¶
修复当中断时KubernetesPodOperator重复日志的问题(#33500)
修复2.7.0数据库迁移作业错误(#33652)
在决定是否跳过时,检查容器状态而不是last_state(#33702)
修复杀死istio代理的逻辑(#33779)
其他¶
引入类常量以使工作节点Pod日志行可配置(#33378)
为KPOSCC对象添加类型提示(#33381)
重构:删除无用的str()调用(#33629)
重构:改进重复项检测和列表排序(#33675)
重构Sqlalchemy查询为2.0风格(第7部分)(#32883)
合并itertools的导入和用法(#33479)
简化其他提供程序中len()上的条件(#33569)
从datetime导入utc并规范其导入(#33450)
始终使用'typing_extensions'中的'Literal'(#33794)
在提供程序中使用字面量dict而不是调用dict()(#33761)
通过将cncf.kubernetes提供程序中的某些模块移动到类型检查块中来改进模块导入(#33781)
7.4.2¶
其他¶
向cncf.kubernetes和celery提供程序添加缺失的re2依赖项(#33237)
使'OnFinishAction'枚举继承自str,以支持将其传递给'KubernetesPodOperatpor'(#33228)
重构:简化providers/cncf中的代码(#33230)
在Airflow执行器中用TaskInstanceState替换State(#32627)
7.4.1¶
错误修复¶
修复读取其他容器日志时,等待基础容器的问题(#33127)
修复:'xcom_sidecar'的可配置Docker镜像(#32858)
修复'KubernetesPodOperator'子类的默认container_logs(#33090)
在'KubernetesPodOperator'的Pod查找过程中考虑自定义Pod标签(#33057)
其他¶
为执行器的CLI命令添加文档生成(#33081)
7.4.0¶
注意
此提供程序版本是将 Kubernetes 执行器和本地 Kubernetes 执行器从核心 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 修复¶
通过在清理前在 'execute_complete' 中等待 pod 终止来修复异步 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)
当在循环中产生事件时添加返回以停止执行 (#31985)
在任务失败的情况下,添加禁用记录 pod 模板的可能性 (#31595)
Bug 修复¶
删除 triggers 类中 yield from 之后的 return 语句 (#31703)
修复 AWS 系统测试的 Fargate 日志记录 (#31622)
其他¶
删除 Python 3.7 支持 (#30963)
7.0.0¶
注意
如Apache Airflow 提供程序支持策略中所述,此提供程序版本仅适用于 Airflow 2.4+。
新特性¶
注意
如果未定义 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 推送 (#29052)
修复了挂起的 KubernetesPodOperator (#28336)
其他¶
使 cncf 提供程序文件名与 AIP-21 对齐 (#29905)
从所有 taskflow 装饰器中删除“样板” (#30118)
确保 setup/teardown 在先前装饰的函数上工作 (#30216)
5.2.0¶
新特性¶
为 ''KubernetesPodOperator'' 添加延迟模式 (#29017)
允许设置 K8s Pod Operator 内基本容器的名称 (#28808)
Bug 修复¶
仅在标记 KPO 已检查时修补单个标签 (#29279)
5.1.0¶
新特性¶
在 K8s Operator 上添加 Flink (#28512)
为 KPO 添加与卷相关的嵌套模板字段 (#27719)
允许 k8s 执行器 / KPO 使用更长的 pod 名称 (#27736)
在k8s exec中,使用标签代替Pod名称来读取Pod日志(#28546)
错误修复¶
当Pod不成功时,修补"checked"状态(#27845)
为k8s执行器保留Pod名称,使其长度小于63个字符(#28237)
其他¶
从提供程序中删除过时的兼容性导入/代码(#28507)
重构文档(#27235)
5.0.0¶
注意
如Apache Airflow 提供程序支持策略中所述,此提供程序版本仅适用于 Airflow 2.3+。
重大更改¶
之前,KubernetesPodOperator 会考虑 Airflow 配置的 kubernetes
部分中的一些设置。这种考虑方式在 4.1.0 中已弃用,现在已被删除。如果您之前依赖于 Airflow 配置,并且希望客户端生成具有非默认配置,则需要在 Airflow 连接中定义您的配置,并设置 KPO 以使用该连接。有关详细信息,请参阅 Kubernetes 提供程序文档,了解如何定义 Kubernetes Airflow 连接。
删除对在 KubernetesPodOperator
中将 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
删除KPO的已弃用的向后兼容对象(#27518)
删除KPO中对node_selectors参数的支持(#27515)
删除k8s钩子中未使用的向后兼容方法(#27490)
删除对在''KubernetesPodOperator''中将''resource''作为字典提供的支持(#27197)
不考虑KPO的airflow核心配置(#26849)
其他¶
将所有提供程序的最低Airflow版本移至2.3.0(#27196)
使用log.exception,它比log.error更经济(#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钩子的extras中删除extra__kubernetes__前缀(#27021)
将container_resources添加为KubernetesPodOperator可模板化(#27457)
为SparkKubernetesSensor添加container_name选项(#26560)
允许在KPO中配置xcom边车容器镜像(#26766)
改进task_id到Pod名称的转换(#27524)
使KubernetesPodOperator中的Pod名称可选(#27120)
使KPO的命名空间可选(#27116)
为@task.kubernetes装饰器的env_vars字段启用模板渲染(#27433)
错误修复¶
修复KubernetesHook在缺少属性时失败的问题(#25787)
修复Kubernetes钩子的日志消息(#26999)
KPO应使用钩子的get命名空间方法获取命名空间(#27516)
新的弃用¶
- 在
KubernetesHook.get_namespace
中,如果定义了连接但未设置命名空间,我们 目前返回“default”;此行为已弃用 (#27202)。在下一个版本中,我们将返回
None
。
- 在
弃用在PodManager中使用核心get_kube_client(#26848)
4.4.0¶
功能¶
feat(KubernetesPodOperator): 添加对container_security_context的支持(#25530)
添加@task.kubernetes taskflow装饰器(#25663)
漂亮地打印KubernetesPodOperator渲染的模板env_vars(#25850)
错误修复¶
避免在需要一个项目时计算所有元素(#26377)
等待xcom边车容器启动,然后再执行边车(#25055)
4.2.0¶
功能¶
将'airflow_kpo_in_cluster'标签添加到KPOPod(#24658)
在KubernetesPodOperator中使用找到的Pod进行删除(#22092)
错误修复¶
还原“修复await_container_completion条件(#23883)”(#24474)
更新提供程序以使用functools兼容性的''cached_property''(#24582)
其他¶
将Kub操作中的'resources'参数重命名为k8s_resources(#24673)
4.1.0¶
功能特性¶
之前,KubernetesPodOperator 依赖于 Airflow 的核心配置(即 Kubernetes 执行器的设置)来获取客户端生成时使用的某些设置。现在,KubernetesPodOperator 使用 KubernetesHook,并且官方已弃用对核心 k8s 设置的考虑。
如果您使用 Airflow 配置设置(例如,与操作符参数相反)来配置 Kubernetes 客户端,那么在下一个主要版本发布之前,您需要添加一个 Airflow 连接,并将您的 KPO 任务设置为使用该连接。
在 KubernetesPodOperator 中使用 KubernetesHook 创建 api 客户端 (#20578)
[FEATURE] KPO 使用 K8S 钩子 (#22086)
向 KubernetesHook 和 KubernetesPodOperator 添加 参数文档 (#23955) (#24054)
Bug 修复¶
在修补 KPO pod 为 “已检查” 时,使用 “远程” pod (#23676)
不要在 KPO _suppress 函数中使用根记录器 (#23835)
修复 await_container_completion 条件 (#23883)
其他¶
将 Cncf.Kubernetes 示例 DAG 迁移到新设计 #22441 (#24132)
清理 日志调用中的 f-字符串 (#23597)
4.0.2¶
Bug 修复¶
修复: 解析日志时出现异常 #20966 (#23301)
修复了 Kubernetes 操作符大型 xcom 内容缺陷 (#23490)
阐明 “reattach_on_restart” 行为 (#23377)
4.0.1¶
Bug 修复¶
在 Airflow 异常中添加 k8s 容器的错误消息 (#22871)
KubernetesHook 在未另行配置的情况下应首先尝试 incluster (#23126)
KubernetesPodOperator 应始终修补 “已经检查” (#22734)
删除 SparkKubernetesOperator 中旧的 Spark 应用程序 (#21092)
清理 重复代码,因为 k8s 提供程序需要 2.3.0+ (#22845)
修复 2.3.0 上与 “KubernetesExecutor” 一起使用的 “KubernetesPodOperator” (#23371)
修复 KPO 以使用连字符而不是句点 (#22982)
修复主分支中新的 MyPy 错误 (#22884)
4.0.0¶
重大更改¶
4.0.0 版本的提供程序仅适用于 Airflow 2.3+。如果要使用 4.* 系列提供程序中的功能或修复,请将 Airflow 升级到 2.3 版本。
不兼容的主要原因是使用了最新的 Kubernetes 库。cncf.kubernetes
提供程序需要的库版本比 Airflow 2.1 和 2.2 用于 Kubernetes 执行器的版本新,这使得提供程序与这些 Airflow 版本不兼容。
功能特性¶
仅在 “DEBUG” 级别为 KPO 日志读取中断记录回溯 (#22595)
更新我们对绑定执行器的依赖项的方法 (#22573)
可以选择在 KPO pod_manager 中不跟踪日志 (#22412)
Bug 修复¶
停止在从 Kubernetes 客户端收到空日志时崩溃 (#22566)
3.1.2(已撤销)¶
警告
此版本已撤销,原因:在 Airflow 2.1, 2.2 上安装允许安装不受支持的 kubernetes 库 > 11.0.0
Bug 修复¶
修复为所有提供程序错误添加的 install_requires (#22382)
修复 “run_id” k8s 和 elasticsearch 与 Airflow 2.1 的兼容性 (#22385)
其他¶
删除 K8s 令牌刷新的 RefreshConfiguration 解决方法 (#20759)
3.1.1(已撤销)¶
警告
此版本已撤销,原因:在 Airflow 2.1, 2.2 上安装允许安装不受支持的 kubernetes 库 > 11.0.0
其他¶
在 PyPI 中添加 Trove 分类符 (框架 :: Apache Airflow :: 提供程序)
3.1.0(已撤销)¶
警告
此版本已撤销,原因:在 Airflow 2.1, 2.2 上安装允许安装不受支持的 kubernetes 库 > 11.0.0
功能特性¶
向映射的 KubernetesPodOperator 添加 map_index 标签 (#21916)
将 KubernetesPodOperator 标签从 execution_date 更改为 run_id (#21960)
其他¶
支持 Python 3.10
修复具有错误操作符大小写的 Kubernetes 示例 (#21898)
从 KPO 文档字符串中删除类型 (#21826)
3.0.2(已撤销)¶
警告
此版本已撤销,原因:在 Airflow 2.1, 2.2 上安装允许安装不受支持的 kubernetes 库 > 11.0.0
Bug 修复¶
为 cncf 添加遗漏的弃用 (#20031)
3.0.1(已撤销)¶
警告
此版本已撤销,原因:在 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 不会被操作符删除,并且会无限期地保留在集群上。在此版本中,我们将默认值更改为 True
。
关于 KubernetesPodOperator 和 PodLauncher 更改的说明¶
警告
KubernetesPodOperator
和 PodLauncher
中的许多方法已重命名。如果您已继承 KubernetesPodOperator
,则需要更新您的子类以反映新的结构。此外,PodStatus
枚举已重命名为 PodPhase
。
概述¶
一般来说,如果您没有继承 KubernetesPodOperator
并且没有直接使用 PodLauncher
类,则无需担心此更改。但是,如果您已继承 KubernetesPodOperator
,以下是一些关于此版本更改的说明。
重构的主要目标之一是明确区分“获取或创建 Pod”和“等待 Pod 完成”阶段。以前,“等待 Pod 完成”的逻辑会根据操作员是“附加到现有 Pod”(例如,在工作节点故障后)还是“创建新 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
)。接下来,如果配置为这样做,操作员将跟踪基本容器日志并将这些日志转发到任务记录器,直到 base
容器完成。如果未配置为收集日志,操作员将改为 KubernetesPodOperator.await_container_completion
,无论哪种方式,我们都必须等待容器完成才能收集 xcom。在(可选)从基本容器中提取 xcom 值后,我们 等待 Pod 完成 <~.PodManager.await_pod_completion>
。
以前,根据 Pod 是“重新附加到”(例如,在工作节点故障后)还是新创建的,等待逻辑可能发生在 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 工作节点故障后)已从
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
,并且值不再是小写的。不再在
cncf.kubernetes.utils.pod_manager.PodManager.run_pod_async
中调用airflow.settings.pod_mutation_hook
。对于KubernetesPodOperator
,现在在build_pod_request_obj
中进行突变。参数
is_delete_operator_pod
的默认值已更改为True
,以便在任务完成后删除 Pod,而不是让它们累积。实际上,似乎更常见的是仅在调试时临时禁用 Pod 删除,因此 Pod 删除是更合理的默认值。
特性¶
为
KubernetesHook
添加参数配置、in_cluster 和 cluster_context (#19695)为
KubernetesPodOperator
实现 dry_run (#20573)澄清 K8s 提供程序中
build_pod_request_obj
的文档字符串 (#20574)
Bug 修复¶
修复 Volume/VolumeMount KPO DeprecationWarning (#19726)
2.2.0¶
特性¶
在 KPO 中添加了命名空间作为模板字段。 (#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 启动器 (#16945)
错误修复¶
错误修复: 在 template_field 中使用 'json' 字符串导致 K8s 运算符出现问题 (#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)
将 pod 名称保存到 xcom 中,用于 KubernetesPodOperator (#15755)
错误修复¶
错误修复由于空的 Affinity K8S 对象而忽略 Pod-Template Affinity (#15787)
错误 Pod 模板文件值被忽略 (#16095)
修复 KPO 中解析错误日志的问题 (#15638)
修复 'is_delete_operator_pod=True' 时 KubernetesPodOperator final_state 调用不成功的问题 (#15490)
1.2.0¶
功能¶
使用 KubernetesPodOperator 要求 'name' (#15373)
将 KPO node_selectors 警告更改为正确的弃用警告 (#15507)
错误修复¶
修复使用 XCom 和 KubernetesPodOperator 时的超时 (#15388)
修复 ''KubernetesPodOperator'' 创建的 pod 上的标签 (#15492)
1.1.0¶
功能¶
将 Kubernetes pod_launcher 与核心 airflow 分离 (#15165)
为 Spark 运算符添加指定 api 组和版本的能力 (#14898)
在可用时使用 libyaml C 库。 (#14577)
1.0.2¶
错误修复¶
如果使用 pod_template,则允许在 KubernetesPodOperator 中覆盖 pod 名称。 (#14186)
允许 KPO 的用户*实际*模板化环境变量 (#14083)
1.0.0¶
提供程序的初始版本。