×

规格

属性 类型 描述

apiVersion

字符串

APIVersion定义了此对象表示的版本化模式。服务器应将识别的模式转换为最新的内部值,并可能拒绝无法识别的值。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

kind

字符串

Kind是一个字符串值,表示此对象表示的REST资源。服务器可以从客户端提交请求的端点推断出这一点。无法更新。使用驼峰式命名法。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

metadata

ObjectMeta

标准对象的元数据。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

spec

对象

PodDisruptionBudgetSpec是对PodDisruptionBudget的描述。

status

对象

PodDisruptionBudgetStatus表示有关PodDisruptionBudget状态的信息。状态可能滞后于系统的实际状态。

.spec

描述

PodDisruptionBudgetSpec是对PodDisruptionBudget的描述。

类型

对象

属性 类型 描述

maxUnavailable

IntOrString

如果驱逐后由“selector”选择的最多“maxUnavailable”个Pod不可用(即即使在没有被驱逐的Pod的情况下),则允许驱逐。例如,可以通过指定0来阻止所有自愿驱逐。这是一个与“minAvailable”互斥的设置。

minAvailable

IntOrString

如果驱逐后由“selector”选择的至少“minAvailable”个Pod仍然可用(即即使在没有被驱逐的Pod的情况下),则允许驱逐。例如,可以通过指定“100%”来阻止所有自愿驱逐。

selector

LabelSelector

对Pod的标签查询,这些Pod的驱逐由中断预算管理。空选择器将不匹配任何Pod,而空({}) 选择器将选择命名空间中的所有Pod。

unhealthyPodEvictionPolicy

字符串

UnhealthyPodEvictionPolicy定义了何时应考虑驱逐不健康Pod的标准。当前实现将健康Pod视为具有type="Ready",status="True"的status.conditions项的Pod。

有效的策略是IfHealthyBudget和AlwaysAllow。如果没有指定策略,则将使用默认行为,这对应于IfHealthyBudget策略。

IfHealthyBudget策略意味着正在运行的Pod(status.phase="Running"),但尚未健康的Pod只有在受保护的应用程序未中断(status.currentHealthy至少等于status.desiredHealthy)时才能被驱逐。健康Pod将受PDB驱逐的影响。

AlwaysAllow策略意味着所有正在运行的Pod(status.phase="Running"),但尚未健康的Pod都被视为已中断,并且无论是否满足PDB中的条件,都可以被驱逐。这意味着受中断应用程序影响的潜在运行Pod可能没有机会变得健康。健康Pod将受PDB驱逐的影响。

将来可能会添加其他策略。如果客户端在该字段中遇到无法识别的策略,则应禁止驱逐不健康的Pod。

此字段处于测试阶段。当启用特性门PDBUnhealthyPodEvictionPolicy(默认启用)时,驱逐API使用此字段。

可能的枚举值:- "AlwaysAllow" 策略意味着所有正在运行的 Pod(status.phase="Running"),但尚未健康的 Pod 被认为是中断的,并且可以被驱逐,无论是否满足 PDB 中的标准。这意味着被中断应用程序的潜在运行中 Pod 可能没有机会变得健康。健康的 Pod 将受 PDB 驱逐限制。- "IfHealthyBudget" 策略意味着只有在受保护的应用程序未中断(status.currentHealthy 至少等于 status.desiredHealthy)的情况下,才能驱逐正在运行的 Pod(status.phase="Running"),但尚未健康的 Pod。健康的 Pod 将受 PDB 驱逐限制。

.status

描述

PodDisruptionBudgetStatus表示有关PodDisruptionBudget状态的信息。状态可能滞后于系统的实际状态。

类型

对象

必需
  • disruptionsAllowed

  • currentHealthy

  • desiredHealthy

  • expectedPods

属性 类型 描述

conditions

数组 (Condition)

Conditions 包含 PDB 的条件。中断控制器设置 DisruptionAllowed 条件。以下是 reason 字段的已知值(将来可能会添加其他原因):- SyncFailed:控制器遇到错误,无法计算允许的中断次数。因此不允许中断,并且条件的状态将为 False。- InsufficientPods:Pod 的数量等于或低于 PodDisruptionBudget 要求的数量。不允许中断,并且条件的状态将为 False。- SufficientPods:Pod 的数量超过 PodDisruptionBudget 要求的数量。条件将为 True,并且允许的中断次数由 disruptionsAllowed 属性提供。

currentHealthy

整数

当前健康 Pod 的数量

desiredHealthy

整数

最小所需健康 Pod 数量

disruptedPods

对象 (Time)

DisruptedPods 包含有关其驱逐已由 API 服务器驱逐子资源处理程序处理但尚未被 PodDisruptionBudget 控制器观察到的 Pod 的信息。从 API 服务器处理驱逐请求的时间到 PDB 控制器将 Pod 视为已标记为删除(或超时后)的时间,Pod 将在此映射中。映射中的键是 Pod 的名称,值是 API 服务器处理驱逐请求的时间。如果删除未发生并且 Pod 仍然存在,PodDisruptionBudget 控制器一段时间后会自动将其从列表中删除。如果一切顺利,此映射大部分时间都应为空。映射中大量条目可能表示 Pod 删除存在问题。

disruptionsAllowed

整数

当前允许的 Pod 中断数量。

expectedPods

整数

此中断预算计算的 Pod 总数

observedGeneration

整数

更新此 PDB 状态时观察到的最新世代。只有当 observedGeneration 等于 PDB 的对象世代时,DisruptionsAllowed 和其他状态信息才有效。

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 类型对象的更改。已弃用:改用列表操作中的“watch”参数,并使用“fieldSelector”参数过滤为单个项目。

  • /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}/status

    • GET:读取指定的 PodDisruptionBudget 的状态

    • PATCH:部分更新指定的 PodDisruptionBudget 的状态

    • PUT:替换指定的 PodDisruptionBudget 的状态

/apis/policy/v1/poddisruptionbudgets

HTTP 方法

GET

描述

列出或监视 PodDisruptionBudget 类型的对象

表 1. HTTP 响应
HTTP 代码 响应体

200 - OK

PodDisruptionBudgetList 模式

401 - 未授权

/apis/policy/v1/watch/poddisruptionbudgets

HTTP 方法

GET

描述

监视 PodDisruptionBudget 列表的单个更改。已弃用:改用列表操作中的“watch”参数。

表 2. HTTP 响应
HTTP 代码 响应体

200 - OK

WatchEvent 模式

401 - 未授权

/apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets

HTTP 方法

DELETE

描述

删除 PodDisruptionBudget 集合

表 3. 查询参数
参数 类型 描述

dryRun

字符串

如果存在,则表示不应持久化修改。无效或无法识别的 dryRun 指令将导致错误响应,并且不会进一步处理请求。有效值为:- All:将处理所有 dry run 阶段

表 4. HTTP 响应
HTTP 代码 响应体

200 - OK

Status 模式

401 - 未授权

HTTP 方法

GET

描述

列出或监视 PodDisruptionBudget 类型的对象

表 5. HTTP 响应
HTTP 代码 响应体

200 - OK

PodDisruptionBudgetList 模式

401 - 未授权

HTTP 方法

POST

描述

创建 PodDisruptionBudget

表 6. 查询参数
参数 类型 描述

dryRun

字符串

如果存在,则表示不应持久化修改。无效或无法识别的 dryRun 指令将导致错误响应,并且不会进一步处理请求。有效值为:- All:将处理所有 dry run 阶段

fieldValidation

字符串

fieldValidation 指示服务器如何处理请求 (POST/PUT/PATCH) 中包含未知或重复字段的对象。有效值为:- Ignore:这将忽略从对象中静默删除的任何未知字段,并将忽略解码器遇到的最后一个重复字段以外的所有重复字段。这是 v1.23 之前的默认行为。- Warn:这将通过标准警告响应标头为对象中每个被删除的未知字段以及遇到的每个重复字段发送警告。如果没有任何其他错误,请求仍将成功,并且只会持久化任何重复字段中的最后一个。这是 v1.23+ 的默认值 - Strict:如果从对象中删除任何未知字段,或者存在任何重复字段,这将使请求失败并返回 BadRequest 错误。服务器返回的错误将包含遇到的所有未知和重复字段。

表 7. 主体参数
参数 类型 描述

body

PodDisruptionBudget 模式

表 8. HTTP 响应
HTTP 代码 响应体

200 - OK

PodDisruptionBudget 模式

201 - 已创建

PodDisruptionBudget 模式

202 - 已接受

PodDisruptionBudget 模式

401 - 未授权

/apis/policy/v1/watch/namespaces/{namespace}/poddisruptionbudgets

HTTP 方法

GET

描述

监视 PodDisruptionBudget 列表的单个更改。已弃用:改用列表操作中的“watch”参数。

表 9. HTTP 响应
HTTP 代码 响应体

200 - OK

WatchEvent 模式

401 - 未授权

/apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}

表 10. 全局路径参数
参数 类型 描述

name

字符串

PodDisruptionBudget 的名称

HTTP 方法

DELETE

描述

删除 PodDisruptionBudget

表 11. 查询参数
参数 类型 描述

dryRun

字符串

如果存在,则表示不应持久化修改。无效或无法识别的 dryRun 指令将导致错误响应,并且不会进一步处理请求。有效值为:- All:将处理所有 dry run 阶段

表 12. HTTP 响应
HTTP 代码 响应体

200 - OK

Status 模式

202 - 已接受

Status 模式

401 - 未授权

HTTP 方法

GET

描述

读取指定的 PodDisruptionBudget

表 13. HTTP 响应
HTTP 代码 响应体

200 - OK

PodDisruptionBudget 模式

401 - 未授权

HTTP 方法

PATCH

描述

部分更新指定的 PodDisruptionBudget

表 14. 查询参数
参数 类型 描述

dryRun

字符串

如果存在,则表示不应持久化修改。无效或无法识别的 dryRun 指令将导致错误响应,并且不会进一步处理请求。有效值为:- All:将处理所有 dry run 阶段

fieldValidation

字符串

fieldValidation 指示服务器如何处理请求 (POST/PUT/PATCH) 中包含未知或重复字段的对象。有效值为:- Ignore:这将忽略从对象中静默删除的任何未知字段,并将忽略解码器遇到的最后一个重复字段以外的所有重复字段。这是 v1.23 之前的默认行为。- Warn:这将通过标准警告响应标头为对象中每个被删除的未知字段以及遇到的每个重复字段发送警告。如果没有任何其他错误,请求仍将成功,并且只会持久化任何重复字段中的最后一个。这是 v1.23+ 的默认值 - Strict:如果从对象中删除任何未知字段,或者存在任何重复字段,这将使请求失败并返回 BadRequest 错误。服务器返回的错误将包含遇到的所有未知和重复字段。

表 15. HTTP 响应
HTTP 代码 响应体

200 - OK

PodDisruptionBudget 模式

201 - 已创建

PodDisruptionBudget 模式

401 - 未授权

HTTP 方法

PUT

描述

替换指定的 PodDisruptionBudget

表 16. 查询参数
参数 类型 描述

dryRun

字符串

如果存在,则表示不应持久化修改。无效或无法识别的 dryRun 指令将导致错误响应,并且不会进一步处理请求。有效值为:- All:将处理所有 dry run 阶段

fieldValidation

字符串

fieldValidation 指示服务器如何处理请求 (POST/PUT/PATCH) 中包含未知或重复字段的对象。有效值为:- Ignore:这将忽略从对象中静默删除的任何未知字段,并将忽略解码器遇到的最后一个重复字段以外的所有重复字段。这是 v1.23 之前的默认行为。- Warn:这将通过标准警告响应标头为对象中每个被删除的未知字段以及遇到的每个重复字段发送警告。如果没有任何其他错误,请求仍将成功,并且只会持久化任何重复字段中的最后一个。这是 v1.23+ 的默认值 - Strict:如果从对象中删除任何未知字段,或者存在任何重复字段,这将使请求失败并返回 BadRequest 错误。服务器返回的错误将包含遇到的所有未知和重复字段。

表 17. 请求体参数
参数 类型 描述

body

PodDisruptionBudget 模式

表 18. HTTP 响应
HTTP 代码 响应体

200 - OK

PodDisruptionBudget 模式

201 - 已创建

PodDisruptionBudget 模式

401 - 未授权

/apis/policy/v1/watch/namespaces/{namespace}/poddisruptionbudgets/{name}

表 19. 全局路径参数
参数 类型 描述

name

字符串

PodDisruptionBudget 的名称

HTTP 方法

GET

描述

监听 PodDisruptionBudget 对象的变更。已弃用:请改用列表操作中的 'watch' 参数,并使用 'fieldSelector' 参数过滤为单个项目。

表 20. HTTP 响应
HTTP 代码 响应体

200 - OK

WatchEvent 模式

401 - 未授权

/apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}/status

表 21. 全局路径参数
参数 类型 描述

name

字符串

PodDisruptionBudget 的名称

HTTP 方法

GET

描述

读取指定的 PodDisruptionBudget 的状态

表 22. HTTP 响应
HTTP 代码 响应体

200 - OK

PodDisruptionBudget 模式

401 - 未授权

HTTP 方法

PATCH

描述

部分更新指定的 PodDisruptionBudget 的状态

表 23. 查询参数
参数 类型 描述

dryRun

字符串

如果存在,则表示不应持久化修改。无效或无法识别的 dryRun 指令将导致错误响应,并且不会进一步处理请求。有效值为:- All:将处理所有 dry run 阶段

fieldValidation

字符串

fieldValidation 指示服务器如何处理请求 (POST/PUT/PATCH) 中包含未知或重复字段的对象。有效值为:- Ignore:这将忽略从对象中静默删除的任何未知字段,并将忽略解码器遇到的最后一个重复字段以外的所有重复字段。这是 v1.23 之前的默认行为。- Warn:这将通过标准警告响应标头为对象中每个被删除的未知字段以及遇到的每个重复字段发送警告。如果没有任何其他错误,请求仍将成功,并且只会持久化任何重复字段中的最后一个。这是 v1.23+ 的默认值 - Strict:如果从对象中删除任何未知字段,或者存在任何重复字段,这将使请求失败并返回 BadRequest 错误。服务器返回的错误将包含遇到的所有未知和重复字段。

表 24. HTTP 响应
HTTP 代码 响应体

200 - OK

PodDisruptionBudget 模式

201 - 已创建

PodDisruptionBudget 模式

401 - 未授权

HTTP 方法

PUT

描述

替换指定的 PodDisruptionBudget 的状态

表 25. 查询参数
参数 类型 描述

dryRun

字符串

如果存在,则表示不应持久化修改。无效或无法识别的 dryRun 指令将导致错误响应,并且不会进一步处理请求。有效值为:- All:将处理所有 dry run 阶段

fieldValidation

字符串

fieldValidation 指示服务器如何处理请求 (POST/PUT/PATCH) 中包含未知或重复字段的对象。有效值为:- Ignore:这将忽略从对象中静默删除的任何未知字段,并将忽略解码器遇到的最后一个重复字段以外的所有重复字段。这是 v1.23 之前的默认行为。- Warn:这将通过标准警告响应标头为对象中每个被删除的未知字段以及遇到的每个重复字段发送警告。如果没有任何其他错误,请求仍将成功,并且只会持久化任何重复字段中的最后一个。这是 v1.23+ 的默认值 - Strict:如果从对象中删除任何未知字段,或者存在任何重复字段,这将使请求失败并返回 BadRequest 错误。服务器返回的错误将包含遇到的所有未知和重复字段。

表 26. 请求体参数
参数 类型 描述

body

PodDisruptionBudget 模式

表 27. HTTP 响应
HTTP 代码 响应体

200 - OK

PodDisruptionBudget 模式

201 - 已创建

PodDisruptionBudget 模式

401 - 未授权