PodDisruptionBudget
apiVersion: policy/v1
import "k8s.io/api/policy/v1"
PodDisruptionBudget
PodDisruptionBudget 是一个对象,用于定义对一组 Pod 可能造成的最大中断
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata (ObjectMeta)
标准对象的元数据。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (PodDisruptionBudgetSpec)
PodDisruptionBudget 的期望行为规范。
status (PodDisruptionBudgetStatus)
PodDisruptionBudget 最近观察到的状态。
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 的集合。
apiVersion: policy/v1
kind: PodDisruptionBudgetList
metadata (ListMeta)
标准对象的元数据。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
items ([]PodDisruptionBudget), 必需
Items 是 PodDisruptionBudget 的列表
操作
get
读取指定的 PodDisruptionBudget
HTTP 请求
GET /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}
参数
响应
200 (PodDisruptionBudget): OK
401: 未授权
get
读取指定的 PodDisruptionBudget 的状态
HTTP 请求
GET /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}/status
参数
响应
200 (PodDisruptionBudget): OK
401: 未授权
list
列出或监视 PodDisruptionBudget 类型的对象
HTTP 请求
GET /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets
参数
namespace (在路径中): 字符串, 必需
allowWatchBookmarks (查询参数): 布尔值
continue (查询参数): 字符串
fieldSelector (查询参数): 字符串
labelSelector (查询参数): 字符串
limit (查询参数): 整数
pretty (在查询中): 字符串
resourceVersion (查询参数): 字符串
resourceVersionMatch (查询参数): 字符串
sendInitialEvents (查询参数): 布尔值
timeoutSeconds (查询参数): 整数
watch (查询参数): 布尔值
响应
200 (PodDisruptionBudgetList): 成功
401: 未授权
list
列出或监视 PodDisruptionBudget 类型的对象
HTTP 请求
GET /apis/policy/v1/poddisruptionbudgets
参数
allowWatchBookmarks (查询参数): 布尔值
continue (查询参数): 字符串
fieldSelector (查询参数): 字符串
labelSelector (查询参数): 字符串
limit (查询参数): 整数
pretty (在查询中): 字符串
resourceVersion (查询参数): 字符串
resourceVersionMatch (查询参数): 字符串
sendInitialEvents (查询参数): 布尔值
timeoutSeconds (查询参数): 整数
watch (查询参数): 布尔值
响应
200 (PodDisruptionBudgetList): 成功
401: 未授权
create
创建一个 PodDisruptionBudget
HTTP 请求
POST /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets
参数
namespace (在路径中): 字符串, 必需
body: PodDisruptionBudget, 必需
dryRun (查询参数): 字符串
fieldManager (查询参数): 字符串
fieldValidation (查询参数): 字符串
pretty (在查询中): 字符串
响应
200 (PodDisruptionBudget): OK
201 (PodDisruptionBudget): 已创建
202 (PodDisruptionBudget): 已接受
401: 未授权
update
替换指定的 PodDisruptionBudget
HTTP 请求
PUT /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}
参数
name (在路径中): 字符串, 必需
PodDisruptionBudget 的名称
namespace (在路径中): 字符串, 必需
body: PodDisruptionBudget, 必需
dryRun (查询参数): 字符串
fieldManager (查询参数): 字符串
fieldValidation (查询参数): 字符串
pretty (在查询中): 字符串
响应
200 (PodDisruptionBudget): OK
201 (PodDisruptionBudget): 已创建
401: 未授权
update
替换指定 PodDisruptionBudget 的状态
HTTP 请求
PUT /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}/status
参数
name (在路径中): 字符串, 必需
PodDisruptionBudget 的名称
namespace (在路径中): 字符串, 必需
body: PodDisruptionBudget, 必需
dryRun (查询参数): 字符串
fieldManager (查询参数): 字符串
fieldValidation (查询参数): 字符串
pretty (在查询中): 字符串
响应
200 (PodDisruptionBudget): OK
201 (PodDisruptionBudget): 已创建
401: 未授权
patch
部分更新指定的 PodDisruptionBudget
HTTP 请求
PATCH /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}
参数
name (在路径中): 字符串, 必需
PodDisruptionBudget 的名称
namespace (在路径中): 字符串, 必需
body: Patch, 必需
dryRun (查询参数): 字符串
fieldManager (查询参数): 字符串
fieldValidation (查询参数): 字符串
force (查询参数): 布尔值
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 (查询参数): 字符串
fieldManager (查询参数): 字符串
fieldValidation (查询参数): 字符串
force (查询参数): 布尔值
pretty (在查询中): 字符串
响应
200 (PodDisruptionBudget): OK
201 (PodDisruptionBudget): 已创建
401: 未授权
delete
删除一个 PodDisruptionBudget
HTTP 请求
DELETE /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}
参数
name (在路径中): 字符串, 必需
PodDisruptionBudget 的名称
namespace (在路径中): 字符串, 必需
body: DeleteOptions
dryRun (查询参数): 字符串
gracePeriodSeconds (查询参数): 整数
pretty (在查询中): 字符串
propagationPolicy (查询参数): 字符串
响应
200 (Status): 成功
202 (Status): 已接受
401: 未授权
deletecollection
删除 PodDisruptionBudget 的集合
HTTP 请求
DELETE /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets
参数
namespace (在路径中): 字符串, 必需
body: DeleteOptions
continue (查询参数): 字符串
dryRun (查询参数): 字符串
fieldSelector (查询参数): 字符串
gracePeriodSeconds (查询参数): 整数
labelSelector (查询参数): 字符串
limit (查询参数): 整数
pretty (在查询中): 字符串
propagationPolicy (查询参数): 字符串
resourceVersion (查询参数): 字符串
resourceVersionMatch (查询参数): 字符串
sendInitialEvents (查询参数): 布尔值
timeoutSeconds (查询参数): 整数
响应
200 (Status): 成功
401: 未授权
此页面为自动生成。
如果您计划报告此页面的问题,请在您的问题描述中提及该页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。