策略 API
策略 API 的参考指南
摘要
第 1 章 策略 API 复制链接链接已复制到粘贴板!
1.1. 驱除 [policy/v1] 复制链接链接已复制到粘贴板!
- 描述
- 驱除从其节点驱除 pod 会受到某些策略和安全限制。这是 Pod 的子资源。通过 POSTing to …/pods/<pod name>/evictions 来创建导致此类驱除的请求。
- 类型
-
对象
1.2. PodDisruptionBudget [policy/v1] 复制链接链接已复制到粘贴板!
- 描述
- PodDisruptionBudget 是一个对象,用于定义可能导致 pod 集合的最大中断
- 类型
-
对象
第 2 章 驱除 [policy/v1] 复制链接链接已复制到粘贴板!
- 描述
- 驱除从其节点驱除 pod 会受到某些策略和安全限制。这是 Pod 的子资源。通过 POSTing to …/pods/<pod name>/evictions 来创建导致此类驱除的请求。
- 类型
-
object
2.1. 规格 复制链接链接已复制到粘贴板!
属性 | 类型 | 描述 |
---|---|---|
|
| APIVersion 定义对象的这个表示法的版本化的 schema。服务器应该将识别的模式转换为最新的内部值,并可拒绝未识别的值。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources |
| 可以提供 DeleteOptions | |
|
| kind 是一个字符串值,代表此对象所代表的 REST 资源。服务器可以从客户端向其提交请求的端点推断。无法更新。采用驼峰拼写法 (CamelCase)。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
| ObjectMeta 描述要被驱除的 pod。 |
2.2. API 端点 复制链接链接已复制到粘贴板!
可用的 API 端点如下:
/api/v1/namespaces/{namespace}/pods/{name}/eviction
-
POST
:创建 Pod 的驱除
-
参数 | 类型 | 描述 |
---|---|---|
|
| Eviction 的名称 |
参数 | 类型 | 描述 |
---|---|---|
|
| 出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理 |
|
| fieldValidation 指示服务器如何处理包含了未知或重复字段的请求 (POST/PUT/PATCH) 中的对象。有效值为: - Ignore :忽略从对象中静默丢弃的未知字段,并将忽略所有除最后一个重复字段以外的所有字段。这是 v1.23 版本之前的默认行为- Warn: 这会通过标准的警告响应头为从对象丢弃的每个未知字段以及遇到的每个重复字段,发送警告。如果没有其他错误,请求仍会成功,且只保留重复字段的最后一个。这是 v1.23+ 的的默认行为 - Strict: 如果从对象中删除了任何未知字段,或者存在任何重复字段,请求将失败并带有 BadRequest 错误。从服务器返回的错误将包含遇到的,以及重复的字段。 |
- HTTP 方法
-
POST
- 描述
- 创建 pod 的驱除
参数 | 类型 | 描述 |
---|---|---|
|
|
第 3 章 PodDisruptionBudget [policy/v1] 复制链接链接已复制到粘贴板!
- 描述
- PodDisruptionBudget 是一个对象,用于定义可能导致 pod 集合的最大中断
- 类型
-
object
3.1. 规格 复制链接链接已复制到粘贴板!
属性 | 类型 | 描述 |
---|---|---|
|
| APIVersion 定义对象的这个表示法的版本化的 schema。服务器应该将识别的模式转换为最新的内部值,并可拒绝未识别的值。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources |
|
| kind 是一个字符串值,代表此对象所代表的 REST 资源。服务器可以从客户端向其提交请求的端点推断。无法更新。采用驼峰拼写法 (CamelCase)。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
| 标准对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata | |
|
| PodDisruptionBudgetSpec 是 PodDisruptionBudget 的描述。 |
|
| PodDisruptionBudgetStatus 代表 PodDisruptionBudget 的状态的信息。状态可能会跟踪系统的实际状态。 |
3.1.1. .spec 复制链接链接已复制到粘贴板!
- 描述
- PodDisruptionBudgetSpec 是 PodDisruptionBudget 的描述。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
| 如果在驱除后没有 "selector" 后选择的 "maxUnavailable" pod 时,允许驱除驱除,如没有被驱除的 pod。例如,可以通过指定 0 来防止所有自愿驱除。这是一个带有 "minAvailable" 的相互排斥的设置。 | |
| 如果 "selector" 选择的最小"minAvailable" pod 在驱除后仍可用,则允许使用驱除功能,即没有被驱除的 pod。例如,您可以通过指定 "100%" 来防止所有自愿驱除。 | |
| 对其驱除由中断预算管理的 pod 的标签查询。null 选择器不匹配任何 pod,而空({})选择器将选择命名空间中的所有 pod。 | |
|
| unhealthyPodEvictionPolicy 定义应考虑驱除不健康的 pod 的条件。当前实现将健康的 pod 视为具有 type="Ready",status="True" 的 status.conditions 项的 pod。 有效策略为 IfHealthyBudget 和 AlwaysAllow。如果没有指定策略,则使用默认行为,对应于 IfHealthyBudget 策略。 IfHealthyBudget 策略意味着运行的 pod (status.phase="Running"),但只有在保护的应用程序没有中断时,才会被驱除(status.currentHealthy 至少等于 status.desiredHealthy)。健康的 pod 将受 PDB 进行驱除。 AlwaysAllow policy 意味着所有正在运行的 pod (status.phase="Running"),但还没有处于健康状态,无论是否满足 PDB 中的条件,都可被驱除。这意味着,对中断的应用程序运行的 pod 可能无法成为健康的几率。健康的 pod 将受 PDB 进行驱除。 以后可能会添加额外的策略。如果客户端在此字段中遇到未识别的策略,则进行驱除决策应禁止驱除不健康的 pod。 此字段是 beta 级别。当启用了功能门 PDBUnhealthyPodEvictionPolicy (默认启用)时,驱除 API 会使用此字段。
可能枚举值: - |
3.1.2. .status 复制链接链接已复制到粘贴板!
- 描述
- PodDisruptionBudgetStatus 代表 PodDisruptionBudget 的状态的信息。状态可能会跟踪系统的实际状态。
- 类型
-
object
- 必填
-
disruptionsAllowed
-
currentHealthy
-
desiredHealthy
-
expectedPods
-
属性 | 类型 | 描述 |
---|---|---|
| 条件包含 PDB 的条件。disruption 控制器设置 DisruptionAllowed 条件。以下是原因字段的已知值(将来可能会添加其他原因):- SyncFailed: 控制器遇到错误,且无法计算允许的中断数量。因此,不允许中断,并且条件的状态将是 False。- InsufficientPods: pod 的数量位于 或低于 PodDisruptionBudget 需要的数量。不允许中断,并且条件的状态为 False。- SufficientPods: PodDisruptionBudget 需要超过 pod。条件为 True,允许的中断数量由 disruptionsAllowed 属性提供。 | |
|
| 当前健康的 pod 数量 |
|
| 最低健康 pod 数量 |
| DisruptedPods 包含有关 pod 的信息,其驱除由 API 服务器驱除子资源处理程序处理,但还没有被 PodDisruptionBudget 控制器观察到。当 API 服务器处理驱除请求时,pod 将处于这个映射中,当 PDB 控制器认为 pod 被标记为删除(或超时后)时,pod 会被标记为要删除的时间。映射中的键是 pod 的名称,值是 API 服务器处理驱除请求的时间。如果没有进行删除,并且 PodDisruptionBudget 控制器将在一段时间后自动删除 pod。如果一切顺利,此映射在大部分时间都应为空。映射中的大量条目可能会表示 pod 删除的问题。 | |
|
| 当前允许的 pod 中断预算数量。 |
|
| 此中断预算计算的 pod 总数 |
|
| 更新此 PDB 状态时观察到的最新生成。只有观察到 PDB 的对象生成时,DisruptionsAllowed 和其他状态信息才有效。 |
3.2. API 端点 复制链接链接已复制到粘贴板!
可用的 API 端点如下:
/apis/policy/v1/poddisruptionbudgets
-
GET
: 列出或监视类型为 PodDisruptionBudget 的对象
-
/apis/policy/v1/watch/poddisruptionbudgets
-
GET
: 观察单个更改 PodDisruptionBudget。已弃用:改为使用 'watch' 参数及列表操作。
-
/apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets
-
DELETE
: 删除 PodDisruptionBudget 集合 -
GET
: 列出或监视类型为 PodDisruptionBudget 的对象 -
POST
:创建 PodDisruptionBudget
-
/apis/policy/v1/watch/namespaces/{namespace}/poddisruptionbudgets
-
GET
: 观察单个更改 PodDisruptionBudget。已弃用:改为使用 'watch' 参数及列表操作。
-
/apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}
-
DELETE
:删除 PodDisruptionBudget -
GET
:读取指定的 PodDisruptionBudget -
PATCH
: 部分更新指定的 PodDisruptionBudget -
PUT
:替换指定的 PodDisruptionBudget
-
/apis/policy/v1/watch/namespaces/{namespace}/poddisruptionbudgets/{name}
-
GET
: 观察对类型为 PodDisruptionBudget 的对象的更改。已弃用:使用带有 list 操作的 'watch' 参数,而是过滤为带有 'fieldSelector' 参数的单个项目。
-
/apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}/status
-
GET
:指定 PodDisruptionBudget 的读取状态 -
PATCH
: 部分更新指定 PodDisruptionBudget 的状态 -
PUT
:替换指定 PodDisruptionBudget 的状态
-
3.2.1. /apis/policy/v1/poddisruptionbudgets 复制链接链接已复制到粘贴板!
- HTTP 方法
-
GET
- 描述
- 列出或监视类型为 PodDisruptionBudget 的对象
HTTP 代码 | 响应正文 |
---|---|
200 - OK |
|
401 - Unauthorized | 空 |
3.2.2. /apis/policy/v1/watch/poddisruptionbudgets 复制链接链接已复制到粘贴板!
- HTTP 方法
-
GET
- 描述
- 观察单个对 PodDisruptionBudget 列表中的更改。已弃用:改为使用 'watch' 参数及列表操作。
HTTP 代码 | 响应正文 |
---|---|
200 - OK |
|
401 - Unauthorized | 空 |
- HTTP 方法
-
DELETE
- 描述
- 删除 PodDisruptionBudget 集合
参数 | 类型 | 描述 |
---|---|---|
|
| 出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理 |
HTTP 代码 | 响应正文 |
---|---|
200 - OK |
|
401 - Unauthorized | 空 |
- HTTP 方法
-
GET
- 描述
- 列出或监视类型为 PodDisruptionBudget 的对象
HTTP 代码 | 响应正文 |
---|---|
200 - OK |
|
401 - Unauthorized | 空 |
- HTTP 方法
-
POST
- 描述
- 创建 PodDisruptionBudget
参数 | 类型 | 描述 |
---|---|---|
|
| 出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理 |
|
| fieldValidation 指示服务器如何处理包含了未知或重复字段的请求 (POST/PUT/PATCH) 中的对象。有效值为: - Ignore :忽略从对象中静默丢弃的未知字段,并将忽略所有除最后一个重复字段以外的所有字段。这是 v1.23 版本之前的默认行为- Warn: 这会通过标准的警告响应头为从对象丢弃的每个未知字段以及遇到的每个重复字段,发送警告。如果没有其他错误,请求仍会成功,且只保留重复字段的最后一个。这是 v1.23+ 的的默认行为 - Strict: 如果从对象中删除了任何未知字段,或者存在任何重复字段,请求将失败并带有 BadRequest 错误。从服务器返回的错误将包含遇到的,以及重复的字段。 |
参数 | 类型 | 描述 |
---|---|---|
|
HTTP 代码 | 响应正文 |
---|---|
200 - OK | |
201 - Created | |
202 - Accepted | |
401 - Unauthorized | 空 |
- HTTP 方法
-
GET
- 描述
- 观察单个对 PodDisruptionBudget 列表中的更改。已弃用:改为使用 'watch' 参数及列表操作。
HTTP 代码 | 响应正文 |
---|---|
200 - OK |
|
401 - Unauthorized | 空 |
参数 | 类型 | 描述 |
---|---|---|
|
| PodDisruptionBudget 的名称 |
- HTTP 方法
-
DELETE
- 描述
- 删除 PodDisruptionBudget
参数 | 类型 | 描述 |
---|---|---|
|
| 出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理 |
- HTTP 方法
-
GET
- 描述
- 阅读指定的 PodDisruptionBudget
HTTP 代码 | 响应正文 |
---|---|
200 - OK | |
401 - Unauthorized | 空 |
- HTTP 方法
-
PATCH
- 描述
- 部分更新指定的 PodDisruptionBudget
参数 | 类型 | 描述 |
---|---|---|
|
| 出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理 |
|
| fieldValidation 指示服务器如何处理包含了未知或重复字段的请求 (POST/PUT/PATCH) 中的对象。有效值为: - Ignore :忽略从对象中静默丢弃的未知字段,并将忽略所有除最后一个重复字段以外的所有字段。这是 v1.23 版本之前的默认行为- Warn: 这会通过标准的警告响应头为从对象丢弃的每个未知字段以及遇到的每个重复字段,发送警告。如果没有其他错误,请求仍会成功,且只保留重复字段的最后一个。这是 v1.23+ 的的默认行为 - Strict: 如果从对象中删除了任何未知字段,或者存在任何重复字段,请求将失败并带有 BadRequest 错误。从服务器返回的错误将包含遇到的,以及重复的字段。 |
HTTP 代码 | 响应正文 |
---|---|
200 - OK | |
201 - Created | |
401 - Unauthorized | 空 |
- HTTP 方法
-
PUT
- 描述
- 替换指定的 PodDisruptionBudget
参数 | 类型 | 描述 |
---|---|---|
|
| 出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理 |
|
| fieldValidation 指示服务器如何处理包含了未知或重复字段的请求 (POST/PUT/PATCH) 中的对象。有效值为: - Ignore :忽略从对象中静默丢弃的未知字段,并将忽略所有除最后一个重复字段以外的所有字段。这是 v1.23 版本之前的默认行为- Warn: 这会通过标准的警告响应头为从对象丢弃的每个未知字段以及遇到的每个重复字段,发送警告。如果没有其他错误,请求仍会成功,且只保留重复字段的最后一个。这是 v1.23+ 的的默认行为 - Strict: 如果从对象中删除了任何未知字段,或者存在任何重复字段,请求将失败并带有 BadRequest 错误。从服务器返回的错误将包含遇到的,以及重复的字段。 |
参数 | 类型 | 描述 |
---|---|---|
|
HTTP 代码 | 响应正文 |
---|---|
200 - OK | |
201 - Created | |
401 - Unauthorized | 空 |
参数 | 类型 | 描述 |
---|---|---|
|
| PodDisruptionBudget 的名称 |
- HTTP 方法
-
GET
- 描述
- 观察对类型为 PodDisruptionBudget 的对象的更改。已弃用:使用带列表操作的 'watch' 参数,而是过滤成带有 'fieldSelector' 参数的单个项目。
HTTP 代码 | 响应正文 |
---|---|
200 - OK |
|
401 - Unauthorized | 空 |
参数 | 类型 | 描述 |
---|---|---|
|
| PodDisruptionBudget 的名称 |
- HTTP 方法
-
GET
- 描述
- 指定 PodDisruptionBudget 的读取状态
HTTP 代码 | 响应正文 |
---|---|
200 - OK | |
401 - Unauthorized | 空 |
- HTTP 方法
-
PATCH
- 描述
- 部分更新指定 PodDisruptionBudget 的状态
参数 | 类型 | 描述 |
---|---|---|
|
| 出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理 |
|
| fieldValidation 指示服务器如何处理包含了未知或重复字段的请求 (POST/PUT/PATCH) 中的对象。有效值为: - Ignore :忽略从对象中静默丢弃的未知字段,并将忽略所有除最后一个重复字段以外的所有字段。这是 v1.23 版本之前的默认行为- Warn: 这会通过标准的警告响应头为从对象丢弃的每个未知字段以及遇到的每个重复字段,发送警告。如果没有其他错误,请求仍会成功,且只保留重复字段的最后一个。这是 v1.23+ 的的默认行为 - Strict: 如果从对象中删除了任何未知字段,或者存在任何重复字段,请求将失败并带有 BadRequest 错误。从服务器返回的错误将包含遇到的,以及重复的字段。 |
HTTP 代码 | 响应正文 |
---|---|
200 - OK | |
201 - Created | |
401 - Unauthorized | 空 |
- HTTP 方法
-
PUT
- 描述
- 替换指定 PodDisruptionBudget 的状态
参数 | 类型 | 描述 |
---|---|---|
|
| 出现时,表示不应保留修改。无效的或未被识别的 dryRun 指令将导致错误响应,且请求不会被进一步处理。有效值为: - All: 所有预演阶段都将被处理 |
|
| fieldValidation 指示服务器如何处理包含了未知或重复字段的请求 (POST/PUT/PATCH) 中的对象。有效值为: - Ignore :忽略从对象中静默丢弃的未知字段,并将忽略所有除最后一个重复字段以外的所有字段。这是 v1.23 版本之前的默认行为- Warn: 这会通过标准的警告响应头为从对象丢弃的每个未知字段以及遇到的每个重复字段,发送警告。如果没有其他错误,请求仍会成功,且只保留重复字段的最后一个。这是 v1.23+ 的的默认行为 - Strict: 如果从对象中删除了任何未知字段,或者存在任何重复字段,请求将失败并带有 BadRequest 错误。从服务器返回的错误将包含遇到的,以及重复的字段。 |
参数 | 类型 | 描述 |
---|---|---|
|
HTTP 代码 | 响应正文 |
---|---|
200 - OK | |
201 - Created | |
401 - Unauthorized | 空 |
Legal Notice
复制链接链接已复制到粘贴板!
Copyright © 2025 Red Hat
OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).
Modified versions must remove all Red Hat trademarks.
Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.
Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.