 PyConChina2022-北京-用Python给Kubernetes写个自定义控制器-张晋涛用 Python 给 Kubernetes 写个控制器 主讲人: 张晋涛 个人介绍 Apache APISIX PMC Kubernetes Ingress NGINX maintainer Microsoft MVP 『 K8S 生态周报』发起人和维护者 GitHub:tao12345666333 Mail: zhangjintao@apache.org Agenda Agenda Kubernetes 中请求处理流程 什么是准入控制器 用 Python 实现准入控制器 与其他方案对比 Kubernetes 架构 kube-apiserver Kubernetes 集群的核心组件 处理集群内外的所有请求 Kubernetes 请求处理流程  API Handler 匹配处理链路( /apis )  认证 / 授权  Mutating Validating Admission :可进行验证操作  etcd :持久化 什么是准入控制器  在 Mutating Admission 或 Validating Admission 执行相 关操作的代码逻辑或者组件  (静态)准入控制器: Kubernetes 代码中携带,不可动 态调整的  动态准入控制器:利用 Kubernetes 提供的 MutatingAdmissionWebhook0 码力 | 17 页 | 1.76 MB | 1 年前3 PyConChina2022-北京-用Python给Kubernetes写个自定义控制器-张晋涛用 Python 给 Kubernetes 写个控制器 主讲人: 张晋涛 个人介绍 Apache APISIX PMC Kubernetes Ingress NGINX maintainer Microsoft MVP 『 K8S 生态周报』发起人和维护者 GitHub:tao12345666333 Mail: zhangjintao@apache.org Agenda Agenda Kubernetes 中请求处理流程 什么是准入控制器 用 Python 实现准入控制器 与其他方案对比 Kubernetes 架构 kube-apiserver Kubernetes 集群的核心组件 处理集群内外的所有请求 Kubernetes 请求处理流程  API Handler 匹配处理链路( /apis )  认证 / 授权  Mutating Validating Admission :可进行验证操作  etcd :持久化 什么是准入控制器  在 Mutating Admission 或 Validating Admission 执行相 关操作的代码逻辑或者组件  (静态)准入控制器: Kubernetes 代码中携带,不可动 态调整的  动态准入控制器:利用 Kubernetes 提供的 MutatingAdmissionWebhook0 码力 | 17 页 | 1.76 MB | 1 年前3
 07 FPGA 助力Python加速计算 陈志勇SOC、多个 IP 硬核、大容量存储器等 Ø 新一代PCIE加速卡:人工智能、金融计算、数据库、高性能计算、视频转码等。 Ø 主要应用: Ø 通信设备:路由器、交换机、5G 设备 Ø 工业市场:工业伺服、控制器、安防相机、机器视觉、超声设备等。 Ø 消费类和广播设备:电视台演播设备、电视墙 Ø 测量测试仪器:示波器、信号发生器、逻辑分析仪等 FPGA 介绍 5 串行计算和并行计算 1 GHz0 码力 | 34 页 | 6.89 MB | 1 年前3 07 FPGA 助力Python加速计算 陈志勇SOC、多个 IP 硬核、大容量存储器等 Ø 新一代PCIE加速卡:人工智能、金融计算、数据库、高性能计算、视频转码等。 Ø 主要应用: Ø 通信设备:路由器、交换机、5G 设备 Ø 工业市场:工业伺服、控制器、安防相机、机器视觉、超声设备等。 Ø 消费类和广播设备:电视台演播设备、电视墙 Ø 测量测试仪器:示波器、信号发生器、逻辑分析仪等 FPGA 介绍 5 串行计算和并行计算 1 GHz0 码力 | 34 页 | 6.89 MB | 1 年前3
 2_FPGA助力Python加速计算_陈志勇SOC、多个 IP 硬核、大容量存储器等 Ø 新一代PCIE加速卡:人工智能、金融计算、数据库、高性能计算、视频转码等。 Ø 主要应用: Ø 通信设备:路由器、交换机、5G 设备 Ø 工业市场:工业伺服、控制器、安防相机、机器视觉、超声设备等。 Ø 消费类和广播设备:电视台演播设备、电视墙 Ø 测量测试仪器:示波器、信号发生器、逻辑分析仪等 FPGA 介绍 5 串行计算和并行计算 1 GHz 1260 码力 | 33 页 | 8.99 MB | 1 年前3 2_FPGA助力Python加速计算_陈志勇SOC、多个 IP 硬核、大容量存储器等 Ø 新一代PCIE加速卡:人工智能、金融计算、数据库、高性能计算、视频转码等。 Ø 主要应用: Ø 通信设备:路由器、交换机、5G 设备 Ø 工业市场:工业伺服、控制器、安防相机、机器视觉、超声设备等。 Ø 消费类和广播设备:电视台演播设备、电视墙 Ø 测量测试仪器:示波器、信号发生器、逻辑分析仪等 FPGA 介绍 5 串行计算和并行计算 1 GHz 1260 码力 | 33 页 | 8.99 MB | 1 年前3
 FPGA助力Python加速计算 陈志勇 SOC、多个 IP 硬核、大容量存储器等 ➢ 新一代PCIE加速卡:人工智能、金融计算、数据库、高性能计算、视频转码等。 ➢ 主要应用: ➢ 通信设备:路由器、交换机、5G 设备 ➢ 工业市场:工业伺服、控制器、安防相机、机器视觉、超声设备等。 ➢ 消费类和广播设备:电视台演播设备、电视墙 ➢ 测量测试仪器:示波器、信号发生器、逻辑分析仪等 FPGA 介绍 5 串行计算和并行计算 1 GHz 1260 码力 | 34 页 | 4.19 MB | 1 年前3 FPGA助力Python加速计算 陈志勇 SOC、多个 IP 硬核、大容量存储器等 ➢ 新一代PCIE加速卡:人工智能、金融计算、数据库、高性能计算、视频转码等。 ➢ 主要应用: ➢ 通信设备:路由器、交换机、5G 设备 ➢ 工业市场:工业伺服、控制器、安防相机、机器视觉、超声设备等。 ➢ 消费类和广播设备:电视台演播设备、电视墙 ➢ 测量测试仪器:示波器、信号发生器、逻辑分析仪等 FPGA 介绍 5 串行计算和并行计算 1 GHz 1260 码力 | 34 页 | 4.19 MB | 1 年前3
 Python 标准库参考指南 2.7.18 Expat . . . . . . . . . . . . . . . . . . . . . . . 874 20 互联网协议和支持 885 20.1 webbrowser —方便的 Web 浏览器控制器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885 20.2 cgi —Common Gateway Interface support 们都是用 Python 实现的。这些模块中的大多数都需 要存在依赖于系统的模块socket ,目前大多数流行平台都支持它。这是一个概述: 20.1 webbrowser —方便的 Web 浏览器控制器 源码: Lib/webbrowser.py webbrowser 模块提供了一个高级接口,允许向用户显示基于 Web 的文档。在大多数情况下,只需从该模 块调用open() 函数就可以了。 在 environment. webbrowser.register(name, constructor[, instance]) 注册 name 浏览器类型。注册浏览器类型后,get() 函数可以返回该浏览器类型的控制器。如果没有提 供 instance,或者为 None,constructor 将在没有参数的情况下被调用,以在需要时创建实例。如果提供 了 instance,则永远不会调用 constructor,并且可能是0 码力 | 1552 页 | 7.42 MB | 9 月前3 Python 标准库参考指南 2.7.18 Expat . . . . . . . . . . . . . . . . . . . . . . . 874 20 互联网协议和支持 885 20.1 webbrowser —方便的 Web 浏览器控制器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885 20.2 cgi —Common Gateway Interface support 们都是用 Python 实现的。这些模块中的大多数都需 要存在依赖于系统的模块socket ,目前大多数流行平台都支持它。这是一个概述: 20.1 webbrowser —方便的 Web 浏览器控制器 源码: Lib/webbrowser.py webbrowser 模块提供了一个高级接口,允许向用户显示基于 Web 的文档。在大多数情况下,只需从该模 块调用open() 函数就可以了。 在 environment. webbrowser.register(name, constructor[, instance]) 注册 name 浏览器类型。注册浏览器类型后,get() 函数可以返回该浏览器类型的控制器。如果没有提 供 instance,或者为 None,constructor 将在没有参数的情况下被调用,以在需要时创建实例。如果提供 了 instance,则永远不会调用 constructor,并且可能是0 码力 | 1552 页 | 7.42 MB | 9 月前3
 Python 标准库参考指南 2.7.18 Expat . . . . . . . . . . . . . . . . . . . . . . . 874 20 互联网协议和支持 885 20.1 webbrowser —方便的 Web 浏览器控制器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885 20.2 cgi —Common Gateway Interface support 们都是用 Python 实现的。这些模块中的大多数都需 要存在依赖于系统的模块socket ,目前大多数流行平台都支持它。这是一个概述: 20.1 webbrowser —方便的 Web 浏览器控制器 源码: Lib/webbrowser.py webbrowser 模块提供了一个高级接口,允许向用户显示基于 Web 的文档。在大多数情况下,只需从该模 块调用open() 函数就可以了。 在 environment. webbrowser.register(name, constructor[, instance]) 注册 name 浏览器类型。注册浏览器类型后,get() 函数可以返回该浏览器类型的控制器。如果没有提 供 instance,或者为 None,constructor 将在没有参数的情况下被调用,以在需要时创建实例。如果提供 了 instance,则永远不会调用 constructor,并且可能是0 码力 | 1552 页 | 7.42 MB | 9 月前3 Python 标准库参考指南 2.7.18 Expat . . . . . . . . . . . . . . . . . . . . . . . 874 20 互联网协议和支持 885 20.1 webbrowser —方便的 Web 浏览器控制器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885 20.2 cgi —Common Gateway Interface support 们都是用 Python 实现的。这些模块中的大多数都需 要存在依赖于系统的模块socket ,目前大多数流行平台都支持它。这是一个概述: 20.1 webbrowser —方便的 Web 浏览器控制器 源码: Lib/webbrowser.py webbrowser 模块提供了一个高级接口,允许向用户显示基于 Web 的文档。在大多数情况下,只需从该模 块调用open() 函数就可以了。 在 environment. webbrowser.register(name, constructor[, instance]) 注册 name 浏览器类型。注册浏览器类型后,get() 函数可以返回该浏览器类型的控制器。如果没有提 供 instance,或者为 None,constructor 将在没有参数的情况下被调用,以在需要时创建实例。如果提供 了 instance,则永远不会调用 constructor,并且可能是0 码力 | 1552 页 | 7.42 MB | 9 月前3
 Python 标准库参考指南 2.7.18 Expat . . . . . . . . . . . . . . . . . . . . . . . 874 20 互联网协议和支持 885 20.1 webbrowser —方便的 Web 浏览器控制器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885 20.2 cgi —Common Gateway Interface support 们都是用 Python 实现的。这些模块中的大多数都需 要存在依赖于系统的模块socket ,目前大多数流行平台都支持它。这是一个概述: 20.1 webbrowser —方便的 Web 浏览器控制器 源码: Lib/webbrowser.py webbrowser 模块提供了一个高级接口,允许向用户显示基于 Web 的文档。在大多数情况下,只需从该模 块调用open() 函数就可以了。 在 environment. webbrowser.register(name, constructor[, instance]) 注册 name 浏览器类型。注册浏览器类型后,get() 函数可以返回该浏览器类型的控制器。如果没有提 供 instance,或者为 None,constructor 将在没有参数的情况下被调用,以在需要时创建实例。如果提供 了 instance,则永远不会调用 constructor,并且可能是0 码力 | 1552 页 | 7.42 MB | 9 月前3 Python 标准库参考指南 2.7.18 Expat . . . . . . . . . . . . . . . . . . . . . . . 874 20 互联网协议和支持 885 20.1 webbrowser —方便的 Web 浏览器控制器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885 20.2 cgi —Common Gateway Interface support 们都是用 Python 实现的。这些模块中的大多数都需 要存在依赖于系统的模块socket ,目前大多数流行平台都支持它。这是一个概述: 20.1 webbrowser —方便的 Web 浏览器控制器 源码: Lib/webbrowser.py webbrowser 模块提供了一个高级接口,允许向用户显示基于 Web 的文档。在大多数情况下,只需从该模 块调用open() 函数就可以了。 在 environment. webbrowser.register(name, constructor[, instance]) 注册 name 浏览器类型。注册浏览器类型后,get() 函数可以返回该浏览器类型的控制器。如果没有提 供 instance,或者为 None,constructor 将在没有参数的情况下被调用,以在需要时创建实例。如果提供 了 instance,则永远不会调用 constructor,并且可能是0 码力 | 1552 页 | 7.42 MB | 9 月前3
 Python 标准库参考指南 3.6.15 解析 . . . . . . . . . . . . . . . . . . . . . . 1052 21 互联网协议和支持 1061 21.1 webbrowser —方便的 Web 浏览器控制器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1061 21.2 cgi —通用网关接口支持 . . . . . . . . 们都是用 Python 实现的。这些模块中的大多数都需 要存在依赖于系统的模块socket ,目前大多数流行平台都支持它。这是一个概述: 21.1 webbrowser —方便的 Web 浏览器控制器 源码: Lib/webbrowser.py webbrowser 模块提供了一个高级接口,允许向用户显示基于 Web 的文档。在大多数情况下,只需从该模 块调用open() 函数就可以了。 在 get(using=None) 返回浏览器类型为 using 指定的控制器对象。如果 using 为 None,则返回适用于调用者环境的默认浏览 器的控制器。 webbrowser.register(name, constructor, instance=None) 注册 name 浏览器类型。注册浏览器类型后,get() 函数可以返回该浏览器类型的控制器。如果没有提 供 instance,或者为 None,constructor0 码力 | 1886 页 | 8.95 MB | 9 月前3 Python 标准库参考指南 3.6.15 解析 . . . . . . . . . . . . . . . . . . . . . . 1052 21 互联网协议和支持 1061 21.1 webbrowser —方便的 Web 浏览器控制器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1061 21.2 cgi —通用网关接口支持 . . . . . . . . 们都是用 Python 实现的。这些模块中的大多数都需 要存在依赖于系统的模块socket ,目前大多数流行平台都支持它。这是一个概述: 21.1 webbrowser —方便的 Web 浏览器控制器 源码: Lib/webbrowser.py webbrowser 模块提供了一个高级接口,允许向用户显示基于 Web 的文档。在大多数情况下,只需从该模 块调用open() 函数就可以了。 在 get(using=None) 返回浏览器类型为 using 指定的控制器对象。如果 using 为 None,则返回适用于调用者环境的默认浏览 器的控制器。 webbrowser.register(name, constructor, instance=None) 注册 name 浏览器类型。注册浏览器类型后,get() 函数可以返回该浏览器类型的控制器。如果没有提 供 instance,或者为 None,constructor0 码力 | 1886 页 | 8.95 MB | 9 月前3
 Python 标准库参考指南 3.6.15 解析 . . . . . . . . . . . . . . . . . . . . . . 1052 21 互联网协议和支持 1061 21.1 webbrowser —方便的 Web 浏览器控制器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1061 21.2 cgi —通用网关接口支持 . . . . . . . . 们都是用 Python 实现的。这些模块中的大多数都需 要存在依赖于系统的模块socket ,目前大多数流行平台都支持它。这是一个概述: 21.1 webbrowser —方便的 Web 浏览器控制器 源码: Lib/webbrowser.py webbrowser 模块提供了一个高级接口,允许向用户显示基于 Web 的文档。在大多数情况下,只需从该模 块调用open() 函数就可以了。 在 get(using=None) 返回浏览器类型为 using 指定的控制器对象。如果 using 为 None,则返回适用于调用者环境的默认浏览 器的控制器。 webbrowser.register(name, constructor, instance=None) 注册 name 浏览器类型。注册浏览器类型后,get() 函数可以返回该浏览器类型的控制器。如果没有提 供 instance,或者为 None,constructor0 码力 | 1886 页 | 8.95 MB | 9 月前3 Python 标准库参考指南 3.6.15 解析 . . . . . . . . . . . . . . . . . . . . . . 1052 21 互联网协议和支持 1061 21.1 webbrowser —方便的 Web 浏览器控制器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1061 21.2 cgi —通用网关接口支持 . . . . . . . . 们都是用 Python 实现的。这些模块中的大多数都需 要存在依赖于系统的模块socket ,目前大多数流行平台都支持它。这是一个概述: 21.1 webbrowser —方便的 Web 浏览器控制器 源码: Lib/webbrowser.py webbrowser 模块提供了一个高级接口,允许向用户显示基于 Web 的文档。在大多数情况下,只需从该模 块调用open() 函数就可以了。 在 get(using=None) 返回浏览器类型为 using 指定的控制器对象。如果 using 为 None,则返回适用于调用者环境的默认浏览 器的控制器。 webbrowser.register(name, constructor, instance=None) 注册 name 浏览器类型。注册浏览器类型后,get() 函数可以返回该浏览器类型的控制器。如果没有提 供 instance,或者为 None,constructor0 码力 | 1886 页 | 8.95 MB | 9 月前3
 Python 标准库参考指南 3.7.13 . . . . . . . . . . . . . . . . . . . . . 1101 22 互联网协议和支持 1111 22.1 webbrowser --- 方便的 Web 浏览器控制器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1111 22.2 cgi --- 通用网关接口支持 . . . . . . 用 Python 实现的。这些模块中的大多数都需 要存在依赖于系统的模块socket ,目前大多数流行平台都支持它。这是一个概述: 22.1 webbrowser --- 方便的 Web 浏览器控制器 源码: Lib/webbrowser.py webbrowser 模块提供了一个高级接口,允许向用户显示基于 Web 的文档。在大多数情况下,只需从该模 块调用open() 函数就可以了。 在 返回浏览器类型为 using 指定的控制器对象。如果 using 为 None,则返回适用于调用者环境的默认浏览 器的控制器。 webbrowser.register(name, constructor, instance=None, *, preferred=False) 注册 name 浏览器类型。注册浏览器类型后,get() 函数可以返回该浏览器类型的控制器。如果没有提 供 instance,或者为0 码力 | 1961 页 | 9.14 MB | 9 月前3 Python 标准库参考指南 3.7.13 . . . . . . . . . . . . . . . . . . . . . 1101 22 互联网协议和支持 1111 22.1 webbrowser --- 方便的 Web 浏览器控制器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1111 22.2 cgi --- 通用网关接口支持 . . . . . . 用 Python 实现的。这些模块中的大多数都需 要存在依赖于系统的模块socket ,目前大多数流行平台都支持它。这是一个概述: 22.1 webbrowser --- 方便的 Web 浏览器控制器 源码: Lib/webbrowser.py webbrowser 模块提供了一个高级接口,允许向用户显示基于 Web 的文档。在大多数情况下,只需从该模 块调用open() 函数就可以了。 在 返回浏览器类型为 using 指定的控制器对象。如果 using 为 None,则返回适用于调用者环境的默认浏览 器的控制器。 webbrowser.register(name, constructor, instance=None, *, preferred=False) 注册 name 浏览器类型。注册浏览器类型后,get() 函数可以返回该浏览器类型的控制器。如果没有提 供 instance,或者为0 码力 | 1961 页 | 9.14 MB | 9 月前3
共 24 条
- 1
- 2
- 3













