From 1b81199f8b30698c0aacd19dd645b3a1b858df21 Mon Sep 17 00:00:00 2001 From: yy <1827641139@qq.com> Date: Mon, 11 Jul 2022 19:16:55 +0800 Subject: [PATCH] [zh-cn]Update content/zh-cn/docs/reference/kubernetes-api/policy-resources/pod-disruption-budget-v1.md [zh-cn]Update content/zh-cn/docs/reference/kubernetes-api/policy-resources/pod-disruption-budget-v1.md [zh-cn]Update content/zh-cn/docs/reference/kubernetes-api/policy-resources/pod-disruption-budget-v1.md [zh-cn]Update content/zh-cn/docs/reference/kubernetes-api/policy-resources/pod-disruption-budget-v1.md [zh-cn]Update content/zh-cn/docs/reference/kubernetes-api/policy-resources/pod-disruption-budget-v1.md --- .../pod-disruption-budget-v1.md | 1347 +++++++++++++++++ 1 file changed, 1347 insertions(+) create mode 100644 content/zh-cn/docs/reference/kubernetes-api/policy-resources/pod-disruption-budget-v1.md diff --git a/content/zh-cn/docs/reference/kubernetes-api/policy-resources/pod-disruption-budget-v1.md b/content/zh-cn/docs/reference/kubernetes-api/policy-resources/pod-disruption-budget-v1.md new file mode 100644 index 0000000000..9590a2f649 --- /dev/null +++ b/content/zh-cn/docs/reference/kubernetes-api/policy-resources/pod-disruption-budget-v1.md @@ -0,0 +1,1347 @@ +--- +api_metadata: + apiVersion: "policy/v1" + import: "k8s.io/api/policy/v1" + kind: "PodDisruptionBudget" +content_type: "api_reference" +description: "PodDisruptionBudget 是一个对象,用于定义可能对一组 Pod 造成的最大干扰。" +title: "PodDisruptionBudget" +weight: 4 +--- + + + +`apiVersion: policy/v1` + +`import "k8s.io/api/policy/v1"` + +## PodDisruptionBudget {#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} + + +PodDisruptionBudgetSpec 是对 PodDisruptionBudget 的描述。 + +
+ + + +- **maxUnavailable** (IntOrString) + + 如果 “selector” 所选中的 Pod 中最多有 “maxUnavailable” Pod 在驱逐后不可用(即去掉被驱逐的 Pod 之后),则允许驱逐。 + 例如,可以通过将此字段设置为 0 来阻止所有自愿驱逐。此字段是与 “minAvailable” 互斥的设置。 + + + IntOrString 是一种可以包含 int32 或字符串数值的类型。在 JSON 或 YAML 编组和解组时, + 会生成或使用内部类型。例如,此类型允许你定义一个可以接受名称或数字的 JSON 字段。 + + + +- **minAvailable** (IntOrString) + + 如果 “selector” 所选中的 Pod 中,至少 “minAvailable” 个 Pod 在驱逐后仍然可用(即去掉被驱逐的 Pod 之后),则允许驱逐。 + 因此,你可以通过将此字段设置为 “100%” 来禁止所有自愿驱逐。 + + + IntOrString 是一种可以包含 int32 或字符串数值的类型。在 JSON 或 YAML 编组和解组时, + 会生成或使用内部类型。例如,此类型允许你定义一个可以接受名称或数字的 JSON 字段。 + + + +- **selector** (}}">LabelSelector) + + 标签查询,用来选择其驱逐由干扰预算来管理的 Pod 集合。 + 选择算符为 null 时将不会匹配任何 Pod,而空 ({}) 选择算符将选中名字空间内的所有 Pod。 + +## PodDisruptionBudgetStatus {#PodDisruptionBudgetStatus} + + +PodDisruptionBudgetStatus 表示有关此 PodDisruptionBudget 状态的信息。状态可能会反映系统的实际状态。 + +
+ + + +- **currentHealthy** (int32), 必需 + + 当前健康 Pod 的数量。 + + + +- **desiredHealthy** (int32), 必需 + + 健康 Pod 的最小期望值。 + + + +- **disruptionsAllowed** (int32), 必需 + + 当前允许的 Pod 干扰计数。 + +- **conditions** ([]Condition) + + + + **补丁策略:根据 `type` 键执行合并操作** + + **Map:键 type 的唯一值将在合并期间被保留** + + conditions 包含 PDB 的状况。干扰控制器会设置 DisruptionAllowed 状况。 + 以下是 reason 字段的已知值(将来可能会添加其他原因): + + - SyncFailed:控制器遇到错误并且无法计算允许的干扰计数。因此不允许任何干扰,且状况的状态将变为 False。 + - InsufficientPods:Pod 的数量只能小于或等于 PodDisruptionBudget 要求的数量。 + 不允许任何干扰,且状况的状态将是 False。 + - SufficientPods:Pod 个数超出 PodDisruptionBudget 所要求的阈值。 + 此状况为 True 时,基于 disruptsAllowed 属性确定所允许的干扰数目。 + + + + + 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 服务器上的 eviction 子资源处理程序处理, + 但尚未被 PodDisruptionBudget 控制器观察到。 + 从 API 服务器处理驱逐请求到 PDB 控制器看到该 Pod 已标记为删除(或超时后),Pod 将记录在此映射中。 + 映射中的键名是 Pod 的名称,键值是 API 服务器处理驱逐请求的时间。 + 如果删除没有发生并且 Pod 仍然存在,PodDisruptionBudget 控制器将在一段时间后自动将 Pod 从列表中删除。 + 如果一切顺利,此映射大部分时间应该是空的。映射中的存在大量条目可能表明 Pod 删除存在问题。 + + + + Time 是 time.Time 的包装器,它支持对 YAML 和 JSON 的正确编组。 + time 包的许多工厂方法提供了包装器。 + + + +- **observedGeneration** (int64) + + 更新此 PDB 状态时观察到的最新一代。 + DisruptionsAllowed 和其他状态信息仅在 observedGeneration 等于 PDB 的对象的代数时才有效。 + +## PodDisruptionBudgetList {#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 是 PodDisruptionBudgets 的列表。 + + + +## 操作 {#Operations} + +
+ + + +### `get` 读取指定的 PodDisruptionBudget + +#### HTTP 请求 + +GET /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name} + + +#### 参数 + + +- **name** (**路径参数**): string, 必需 + + PodDisruptionBudget 的名称。 + + +- **namespace** (**路径参数**): string, 必需 + + }}">namespace + + +- **pretty** (**查询参数**): string + + }}">pretty + + +#### 响应 + +200 (}}">PodDisruptionBudget): OK + +401: Unauthorized + + +### `get` 读取指定 PodDisruptionBudget 的状态 + +#### HTTP 请求 + +GET /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}/status + + +#### 参数 + + +- **name** (**路径参数**): string, 必需 + + PodDisruptionBudget 的名称。 + + +- **namespace** (**路径参数**): string, 必需 + + }}">namespace + + +- **pretty** (**查询参数**): string + + }}">pretty + + +响应 + +200 (}}">PodDisruptionBudget): OK + +401: Unauthorized + + +### `list` 列出或监视 PodDisruptionBudget 类型的对象 + +#### HTTP 请求 + +GET /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets + + +#### 参数 + + +- **namespace** (**路径参数**): string, 必需 + + }}">namespace + + +- **allowWatchBookmarks** (**查询参数**): boolean + + }}">allowWatchBookmarks + + +- **continue** (**查询参数**): string + + }}">continue + + +- **fieldSelector** (**查询参数**): string + + }}">fieldSelector + + +- **labelSelector** (**查询参数**): string + + }}">labelSelector + + +- **limit** (**查询参数**): integer + + }}">limit + + +- **pretty** (**查询参数**): string + + }}">pretty + + +- **resourceVersion** (**查询参数**): string + + }}">resourceVersion + + +- **resourceVersionMatch** (**查询参数**): string + + }}">resourceVersionMatch + + +- **timeoutSeconds** (**查询参数**): integer + + }}">timeoutSeconds + + +- **watch** (**查询参数**): boolean + + }}">watch + + +#### 响应 + +200 (}}">PodDisruptionBudgetList): OK + +401: Unauthorized + + +### `list` 列出或监视 PodDisruptionBudget 类型的对象 + +#### HTTP 请求 + +GET /apis/policy/v1/poddisruptionbudgets + + +#### 参数 + + +- **allowWatchBookmarks** (**查询参数**): boolean + + }}">allowWatchBookmarks + + +- **continue** (**查询参数**): string + + }}">continue + + +- **fieldSelector** (**查询参数**): string + + }}">fieldSelector + + +- **labelSelector** (**查询参数**): string + + }}">labelSelector + + +- **limit** (**查询参数**): integer + + }}">limit + + +- **pretty** (**查询参数**): string + + }}">pretty + + +- **resourceVersion** (**查询参数**): string + + }}">resourceVersion + + +- **resourceVersionMatch** (**查询参数**): string + + }}">resourceVersionMatch + + +- **timeoutSeconds** (**查询参数**): integer + + }}">timeoutSeconds + + +- **watch** (**查询参数**): boolean + + }}">watch + + +#### 响应 + +200 (}}">PodDisruptionBudgetList): OK + +401: Unauthorized + + +### `create` 创建一个 PodDisruptionBudget +#### HTTP 请求 + +POST /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets + + +#### 参数 + + +- **namespace** (**路径参数**): string, 必需 + + }}">namespace + + +- **body**: }}">PodDisruptionBudget, +必需 + + +- **dryRun** (**查询参数**): string + + }}">dryRun + + +- **fieldManager** (**查询参数**): string + + }}">fieldManager + + +- **fieldValidation** (**查询参数**): string + + }}">fieldValidation + + +- **pretty** (**查询参数**): string + + }}">pretty + + +#### 响应 + +200 (}}">PodDisruptionBudget): OK + +201 (}}">PodDisruptionBudget): Created + +202 (}}">PodDisruptionBudget): Accepted + +401: Unauthorized + + +### `update` 替换指定的 PodDisruptionBudget + +#### HTTP 请求 + +PUT /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name} + + +#### 参数 + + +- **name** (**路径参数**): string, 必需 + + PodDisruptionBudget 的名称。 + + +- **namespace** (**路径参数**): string, 必需 + + }}">namespace + + +- **body**: }}">PodDisruptionBudget, +必需 + + +- **dryRun** (**查询参数**): string + + }}">dryRun + + +- **fieldManager** (**查询参数**): string + + }}">fieldManager + + +- **fieldValidation** (**查询参数**): string + + }}">fieldValidation + + + + +#### 响应 + +200 (}}">PodDisruptionBudget): OK + +201 (}}">PodDisruptionBudget): Created + +401: Unauthorized + + +### `update` 替换指定 PodDisruptionBudget 的状态 + +#### HTTP 请求 + +PUT /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}/status + + +#### 参数 + + +- **name** (**路径参数**): string, 必需 + + PodDisruptionBudget 的名称。 + + +- **namespace** (**路径参数**): string, 必需 + + }}">namespace + + +- **body**: }}">PodDisruptionBudget, +必需 + + +- **dryRun** (**查询参数**): string + + }}">dryRun}}">fieldManager +--> +- **fieldManager** (**查询参数**): string + + }}">fieldManager + + +- **fieldValidation** (**查询参数**): string + + }}">fieldValidation + + + + +#### 响应 + +200 (}}">PodDisruptionBudget): OK + +201 (}}">PodDisruptionBudget): Created + +401: Unauthorized + + +### `patch` 部分更新指定的 PodDisruptionBudget +#### HTTP 请求 + +PATCH /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name} + + +#### 参数 + + +- **name** (**路径参数**): string, 必需 + + PodDisruptionBudget 的名称 + + +- **namespace** (**路径参数**): string, 必需 + + }}">namespace + + + +- **body**: }}">Patch, 必需 + + +- **dryRun** (**查询参数**): string + + }}">dryRun + + +- **fieldManager** (**查询参数**): string + + }}">fieldManager + + +- **fieldValidation** (**查询参数**): string + + }}">fieldValidation + + +- **force** (**查询参数**): boolean + + }}">force + + +- **pretty** (**查询参数**): string + + }}">pretty + + +#### 响应 + +200 (}}">PodDisruptionBudget): OK + +201 (}}">PodDisruptionBudget): Created + +401: Unauthorized + + +### `patch` 部分更新指定 PodDisruptionBudget 的状态 +#### HTTP 请求 + +PATCH /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}/status + + +#### 参数 + + +- **name** (**路径参数**): string, 必需 + + PodDisruptionBudget 的名称。 + + +- **namespace** (**路径参数**): string, 必需 + + }}">namespace + + +- **body**: }}">Patch, 必需 + + +- **dryRun** (**查询参数**): string + + }}">dryRun + + +- **fieldManager** (**查询参数**): string + + }}">fieldManager + + +- **fieldValidation** (**查询参数**): string + + }}">fieldValidation + + +- **force** (**查询参数**): boolean + + }}">force + + +- **pretty** (**查询参数**): string + + }}">pretty + + +#### 响应 + +200 (}}">PodDisruptionBudget): OK + +201 (}}">PodDisruptionBudget): Created + +401: Unauthorized + + +### `delete` 删除 PodDisruptionBudget + +#### HTTP 请求 + +DELETE /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name} + + +#### 参数 + + +- **name** (**路径参数**): string, 必需 + + PodDisruptionBudget 的名称。 + + +- **namespace** (**路径参数**): string, 必需 + + }}">namespace + +- **body**: }}">DeleteOptions + + +- **dryRun** (**查询参数**): string + + }}">dryRun + + +- **gracePeriodSeconds** (**查询参数**): integer + + }}">gracePeriodSeconds + + +- **pretty** (**查询参数**): string + + }}">pretty + + +- **propagationPolicy** (**查询参数**): string + + }}">propagationPolicy + + +#### 响应 + +200 (}}">Status): OK + +202 (}}">Status): Accepted + +401: Unauthorized + + +### `deletecollection` 删除 PodDisruptionBudget 的集合 + +#### HTTP Request + +DELETE /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets + + +#### 参数 + + +- **namespace** (**路径参数**): string, 必需 + + }}">namespace + +- **body**: }}">DeleteOptions + + +- **continue** (**查询参数**): string + + }}">continue + + +- **dryRun** (**查询参数**): string + + }}">dryRun + + +- **fieldSelector** (**查询参数**): string + + }}">fieldSelector + + +- **gracePeriodSeconds** (**查询参数**): integer + + }}">gracePeriodSeconds + + +- **labelSelector** (**查询参数**): string + + }}">labelSelector + + +- **limit** (**查询参数**): integer + + }}">limit + + +- **pretty** (**查询参数**): string + + }}">pretty + + +- **propagationPolicy** (**查询参数**): string + + }}">propagationPolicy + + +- **resourceVersion** (**查询参数**): string + + }}">resourceVersion + + +- **resourceVersionMatch** (**查询参数**): string + + }}">resourceVersionMatch + + +- **timeoutSeconds** (**查询参数**): integer + + }}">timeoutSeconds + + +#### 响应 + +200 (}}">Status): OK + +401: Unauthorized +