第 3 章 PodDisruptionBudget [policy/v1]
- 描述
- PodDisruptionBudget 是一个对象,用于定义可能导致 pod 集合的最大中断
- 类型
-
对象
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 和其他状态信息才有效。 |