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
Python3 基础教程 - 廖雪峰需要把参数名写上。比如调用 enroll('Adam', 'M', city='Tianjin'),意 思是,city 参数用传进去的值,其他默认参数继续使用默认值。 默认参数很有用,但使用不当,也会掉坑里。默认参数有个最大的坑, 演示如下: 先定义一个函数,传入一个 list,添加一个 END 再返回: def add_end(L=[]): L.append('END') print(name, '=>', member, ',', member.value) value 属性则是自动赋给成员的 int 常量,默认从 1 开始计数。 如果需要更精确地控制枚举类型,可以从 Enum 派生出自定义类: from enum import Enum, unique Python3 基础教程【完整版】 http://www.yeayee.com/ 这和静态语言有非常大的不同,要在静态语言运行期创建类,必须构造 源代码字符串再调用编译器,或者借助一些工具生成字节码实现,本质 上都是动态编译,会非常复杂。 metaclass 除了使用 type()动态创建类以外,要控制类的创建行为,还可以使用 metaclass。 metaclass,直译为元类,简单的解释就是: 当我们定义了类以后,就可以根据这个类创建出实例,所以:先定义类, 然后创建实例。 Python30 码力 | 531 页 | 5.15 MB | 1 年前3
Hello 算法 1.1.0 Python版器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输入数据量较大时,测试结果可能恰恰相反。因此,为 了得到有说服力的结论,我们需要测试各种规模的输入数据,而这需要耗费大量的计算资源。 2.1.2 理论估算 由于实际测试具有较大的局限性,因此我们可以考 为渐近复杂度分析(asymptotic complexity analysis),简称复杂度分析。 复杂度分析能够体现算法运行所需的时间和空间资源与输入数据大小之间的关系。它描述了随着输入数据大 小的增加,算法执行所需时间和空间的增长趋势。这个定义有些拗口,我们可以将其分为三个重点来理解。 ‧“时间和空间资源”分别对应时间复杂度(time complexity)和空间复杂度(space complexity)。 ‧“随 在算法中,重复执行某个任务是很常见的,它与复杂度分析息息相关。因此,在介绍时间复杂度和空间复杂 度之前,我们先来了解如何在程序中实现重复执行任务,即两种基本的程序控制结构:迭代、递归。 2.2.1 迭代 迭代(iteration)是一种重复执行某个任务的控制结构。在迭代中,程序会在满足一定的条件下重复执行某段 代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合在预先知道迭代次数时使用。0 码力 | 364 页 | 18.42 MB | 1 年前3
Hello 算法 1.0.0 Python版器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输入数据量较大时,测试结果可能恰恰相反。因此,为 了得到有说服力的结论,我们需要测试各种规模的输入数据,而这需要耗费大量的计算资源。 2.1.2 理论估算 由于实际测试具有较大的局限性,因此我们可以考 asymptotic complexity analysis」,简称「复杂度分析」。 复杂度分析能够体现算法运行所需的时间和空间资源与输入数据大小之间的关系。它描述了随着输入数据大 小的增加,算法执行所需时间和空间的增长趋势。这个定义有些拗口,我们可以将其分为三个重点来理解。 ‧“时间和空间资源”分别对应「时间复杂度 time complexity」和「空间复杂度 space complexity」。 ‧ 在算法中,重复执行某个任务是很常见的,它与复杂度分析息息相关。因此,在介绍时间复杂度和空间复杂 度之前,我们先来了解如何在程序中实现重复执行任务,即两种基本的程序控制结构:迭代、递归。 2.2.1 迭代 「迭代 iteration」是一种重复执行某个任务的控制结构。在迭代中,程序会在满足一定的条件下重复执行某 段代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合在预先知道迭代次数时使用。0 码力 | 362 页 | 17.54 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Python 版试,统计 平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输入数据量较大时,测试结果可能恰恰相反。因此,为 了得到有说服力的结论,我们需要测试各种规模的输入数据,而这需要耗费大量的计算资源。 2.1.2 理论估算 由于实际测试具有较大的局限性,因此我们可以考 为渐近复杂度分析(asymptotic complexity analysis),简称复杂度分析。 复杂度分析能够体现算法运行所需的时间和空间资源与输入数据大小之间的关系。它描述了随着输入数据大 小的增加,算法执行所需时间和空间的增长趋势。这个定义有些拗口,我们可以将其分为三个重点来理解。 ‧“时间和空间资源”分别对应时间复杂度(time complexity)和空间复杂度(space complexity)。 ‧“随 在算法中,重复执行某个任务是很常见的,它与复杂度分析息息相关。因此,在介绍时间复杂度和空间复杂 度之前,我们先来了解如何在程序中实现重复执行任务,即两种基本的程序控制结构:迭代、递归。 2.2.1 迭代 迭代(iteration)是一种重复执行某个任务的控制结构。在迭代中,程序会在满足一定的条件下重复执行某段 代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合在预先知道迭代次数时使用。0 码力 | 364 页 | 18.43 MB | 10 月前3
Python 标准库参考指南 3.7.13 . . . . . . . . . . . . . . . . . . . . . . 1101 22 互联网协议和支持 1111 22.1 webbrowser --- 方便的 Web 浏览器控制器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1111 22.2 cgi --- 通用网关接口支持 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1595 30.5 warnings ——警告信息的控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1596 30.6 dataclasses --- 数据类 . . . . . . . . 1756 36.6 termios --- POSIX 风格的 tty 控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1758 36.7 tty --- 终端控制功能 . . . . . . . . . . . . . . . . . . . . . . . . .0 码力 | 1961 页 | 9.14 MB | 9 月前3
Python 标准库参考指南 3.7.13 XML 解析 . . . . . . . . . . . . . . . . . . . . 1040 22 互联网协议和支持 1049 22.1 webbrowser --- 方便的 Web 浏览器控制器 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1049 22.2 cgi --- 通用网关接口支持 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1502 30.5 warnings ——警告信息的控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1502 30.6 dataclasses --- 数据类 . . . . . . . . . . 1652 36.6 termios --- POSIX 风格的 tty 控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1654 36.7 tty --- 终端控制功能 . . . . . . . . . . . . . . . . . . . . . . . . . .0 码力 | 1846 页 | 9.09 MB | 9 月前3
Python 标准库参考指南 3.8.20 . . . . . . . . . . . . . . . . . . . . . . 1166 21 互联网协议和支持 1177 21.1 webbrowser --- 方便的 Web 浏览器控制器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1177 21.2 cgi --- 通用网关接口支持 . . . . . . 顶层脚本环境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1676 29.5 warnings ——控制警告信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1677 29.6 dataclasses . . . . . . . . 1844 35.6 termios --- POSIX 风格的 tty 控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1846 35.7 tty --- 终端控制功能 . . . . . . . . . . . . . . . . . . . . . . . . .0 码力 | 2052 页 | 9.74 MB | 9 月前3
Python 标准库参考指南 3.8.20 XML 解析 . . . . . . . . . . . . . . . . . . . . 1089 21 互联网协议和支持 1099 21.1 webbrowser --- 方便的 Web 浏览器控制器 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1099 21.2 cgi --- 通用网关接口支持 . . . . . . . . 顶层脚本环境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1568 29.5 warnings ——控制警告信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1568 29.6 dataclasses --- . . . . . . . . . 1726 35.6 termios --- POSIX 风格的 tty 控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1728 35.7 tty --- 终端控制功能 . . . . . . . . . . . . . . . . . . . . . . . . . .0 码力 | 1927 页 | 9.69 MB | 9 月前3
Python 标准库参考指南 3.8.20 XML 解析 . . . . . . . . . . . . . . . . . . . . 1089 21 互联网协议和支持 1099 21.1 webbrowser --- 方便的 Web 浏览器控制器 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1099 21.2 cgi --- 通用网关接口支持 . . . . . . . . 顶层脚本环境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1568 29.5 warnings ——控制警告信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1568 29.6 dataclasses --- . . . . . . . . . 1726 35.6 termios --- POSIX 风格的 tty 控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1728 35.7 tty --- 终端控制功能 . . . . . . . . . . . . . . . . . . . . . . . . . .0 码力 | 1927 页 | 9.69 MB | 9 月前3
共 150 条
- 1
- 2
- 3
- 4
- 5
- 6
- 15













