PodDisruptionBudget

PodDisruptionBudget 是一个对象,用于定义对一组 Pod 可能造成的最大中断。

apiVersion: policy/v1

import "k8s.io/api/policy/v1"

PodDisruptionBudget

PodDisruptionBudget 是一个对象,用于定义对一组 Pod 可能造成的最大中断


PodDisruptionBudgetSpec

PodDisruptionBudgetSpec 是对 PodDisruptionBudget 的描述。


  • maxUnavailable (IntOrString)

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

    IntOrString 是一种可以保存 int32 或字符串的类型。 当在 JSON 或 YAML 中进行编组和解组时,它会生成或使用内部类型。 这允许您拥有,例如,可以接受名称或数字的 JSON 字段。

  • minAvailable (IntOrString)

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

    IntOrString 是一种可以保存 int32 或字符串的类型。 当在 JSON 或 YAML 中进行编组和解组时,它会生成或使用内部类型。 这允许您拥有,例如,可以接受名称或数字的 JSON 字段。

  • selector (LabelSelector)

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

  • unhealthyPodEvictionPolicy (string)

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

    有效的策略为 IfHealthyBudget 和 AlwaysAllow。 如果未指定任何策略,则将使用默认行为,该行为对应于 IfHealthyBudget 策略。

    IfHealthyBudget 策略表示仅当受保护的应用程序未中断时(status.currentHealthy 至少等于 status.desiredHealthy),才能驱逐正在运行(status.phase="Running")但尚未健康的 Pod。 健康的 Pod 将受到 PDB 的驱逐。

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

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

    此字段处于 Beta 级别。 当启用特性门控 PDBUnhealthyPodEvictionPolicy(默认启用)时,驱逐 API 会使用此字段。

PodDisruptionBudgetStatus

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


  • currentHealthy (int32), 必需

    当前健康 Pod 的数量

  • desiredHealthy (int32), 必需

    所需的最小健康 Pod 数量

  • disruptionsAllowed (int32), 必需

    当前允许的 Pod 中断数量。

  • expectedPods (int32), 必需

    此中断预算计数的 Pod 总数

  • conditions ([]Condition)

    补丁策略:在键 type 上合并

    Map:在合并期间,键 type 上的唯一值将被保留

    Conditions 包含 PDB 的条件。 中断控制器设置 DisruptionAllowed 条件。 以下是 reason 字段的已知值(将来可能会添加其他原因):- SyncFailed:控制器遇到错误,并且无法计算允许的中断数量。 因此,不允许任何中断,并且该条件的状态将为 False。

    • InsufficientPods:Pod 的数量等于或低于 PodDisruptionBudget 所需的数量。 不允许任何中断,并且该条件的状态将为 False。
    • SufficientPods:Pod 的数量多于 PodDisruptionBudget 所需的数量。 该条件将为 True,并且允许的中断数量由 disruptionsAllowed 属性提供。

    Condition 包含有关此 API 资源当前状态的一个方面的详细信息。

    • conditions.lastTransitionTime (Time), 必需

      lastTransitionTime 是条件从一个状态转换到另一个状态的最后时间。 这应该是底层条件更改时的时间。 如果未知,则使用 API 字段更改的时间是可以接受的。

      Time 是 time.Time 的包装器,它支持正确地编组到 YAML 和 JSON。 为 time 包提供的许多工厂方法提供了包装器。

    • conditions.message (string), 必需

      message 是人类可读的消息,指示有关转换的详细信息。 这可能是一个空字符串。

    • conditions.reason (string), 必需

      reason 包含一个编程标识符,指示条件上次转换的原因。 特定条件类型的生产者可以为此字段定义期望值和含义,以及这些值是否被视为有保证的 API。 该值应为 CamelCase 字符串。 此字段不能为空。

    • conditions.status (string), 必需

      条件状态,True、False、Unknown 之一。

    • conditions.type (string), 必需

      CamelCase 或 foo.example.com/CamelCase 中的条件类型。

    • conditions.observedGeneration (int64)

      observedGeneration 表示设置条件所依据的 .metadata.generation。 例如,如果 .metadata.generation 当前为 12,但 .status.conditions[x].observedGeneration 为 9,则该条件相对于实例的当前状态是过时的。

  • disruptedPods (map[string]Time)

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

    Time 是 time.Time 的包装器,它支持正确地编组到 YAML 和 JSON。 为 time 包提供的许多工厂方法提供了包装器。

  • observedGeneration (int64)

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

PodDisruptionBudgetList

PodDisruptionBudgetList 是 PodDisruptionBudget 的集合。


操作


get 读取指定的 PodDisruptionBudget

HTTP 请求

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

参数

  • name (在路径中): 字符串, 必需

    PodDisruptionBudget 的名称

  • namespace (在路径中): 字符串, 必需

    命名空间

  • pretty (在查询中): 字符串

    pretty

响应

200 (PodDisruptionBudget): OK

401: 未授权

get 读取指定的 PodDisruptionBudget 的状态

HTTP 请求

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

参数

  • name (在路径中): 字符串, 必需

    PodDisruptionBudget 的名称

  • namespace (在路径中): 字符串, 必需

    命名空间

  • pretty (在查询中): 字符串

    pretty

响应

200 (PodDisruptionBudget): OK

401: 未授权

list 列出或监视 PodDisruptionBudget 类型的对象

HTTP 请求

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

参数

响应

200 (PodDisruptionBudgetList): 成功

401: 未授权

list 列出或监视 PodDisruptionBudget 类型的对象

HTTP 请求

GET /apis/policy/v1/poddisruptionbudgets

参数

响应

200 (PodDisruptionBudgetList): 成功

401: 未授权

create 创建一个 PodDisruptionBudget

HTTP 请求

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

参数

响应

200 (PodDisruptionBudget): OK

201 (PodDisruptionBudget): 已创建

202 (PodDisruptionBudget): 已接受

401: 未授权

update 替换指定的 PodDisruptionBudget

HTTP 请求

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

参数

响应

200 (PodDisruptionBudget): OK

201 (PodDisruptionBudget): 已创建

401: 未授权

update 替换指定 PodDisruptionBudget 的状态

HTTP 请求

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

参数

响应

200 (PodDisruptionBudget): OK

201 (PodDisruptionBudget): 已创建

401: 未授权

patch 部分更新指定的 PodDisruptionBudget

HTTP 请求

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

参数

  • name (在路径中): 字符串, 必需

    PodDisruptionBudget 的名称

  • namespace (在路径中): 字符串, 必需

    命名空间

  • body: Patch, 必需

  • dryRun (查询参数): 字符串

    dryRun

  • fieldManager (查询参数): 字符串

    fieldManager

  • fieldValidation (查询参数): 字符串

    fieldValidation

  • force (查询参数): 布尔值

    force

  • pretty (在查询中): 字符串

    pretty

响应

200 (PodDisruptionBudget): OK

201 (PodDisruptionBudget): 已创建

401: 未授权

patch 部分更新指定 PodDisruptionBudget 的状态

HTTP 请求

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

参数

  • name (在路径中): 字符串, 必需

    PodDisruptionBudget 的名称

  • namespace (在路径中): 字符串, 必需

    命名空间

  • body: Patch, 必需

  • dryRun (查询参数): 字符串

    dryRun

  • fieldManager (查询参数): 字符串

    fieldManager

  • fieldValidation (查询参数): 字符串

    fieldValidation

  • force (查询参数): 布尔值

    force

  • pretty (在查询中): 字符串

    pretty

响应

200 (PodDisruptionBudget): OK

201 (PodDisruptionBudget): 已创建

401: 未授权

delete 删除一个 PodDisruptionBudget

HTTP 请求

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

参数

响应

200 (Status): 成功

202 (Status): 已接受

401: 未授权

deletecollection 删除 PodDisruptionBudget 的集合

HTTP 请求

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

参数

响应

200 (Status): 成功

401: 未授权

此页面为自动生成。

如果您计划报告此页面的问题,请在您的问题描述中提及该页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。

上次修改时间:2024 年 8 月 28 日 下午 6:01 PST: 更新 v1.31 的生成 API 参考 (8ba98c79c1)