PodDisruptionBudget

PodDisruptionBudget 是一個物件,用於定義可能對一組 Pod 造成的最大中斷。

apiVersion: policy/v1

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

PodDisruptionBudget

PodDisruptionBudget 是一個物件,用於定義可能對一組 Pod 造成的最大中斷


PodDisruptionBudgetSpec

PodDisruptionBudgetSpec 是 PodDisruptionBudget 的描述。


  • maxUnavailable (IntOrString)

    如果驅逐後,由 "selector" 選擇的最多 "maxUnavailable" 個 Pod 處於不可用狀態,則允許驅逐。例如,可以透過指定 0 來阻止所有自願驅逐。這是與 "minAvailable" 互斥的設定。

    IntOrString 是一種可以包含 int32 或 string 的型別。在 JSON 或 YAML 編組和解組時,它會生成或消耗內部型別。這允許您擁有一個例如可以接受名稱或數字的 JSON 欄位。

  • minAvailable (IntOrString)

    如果驅逐後,至少有 "minAvailable" 個由 "selector" 選擇的 Pod 仍然可用,則允許驅逐。因此,例如,您可以透過指定 "100%" 來阻止所有自願驅逐。

    IntOrString 是一種可以包含 int32 或 string 的型別。在 JSON 或 YAML 編組和解組時,它會生成或消耗內部型別。這允許您擁有一個例如可以接受名稱或數字的 JSON 欄位。

  • selector (LabelSelector)

    標籤查詢 Pod,其驅逐由中斷預算管理。空選擇器 ({}) 將選擇名稱空間內的所有 Pod,而 null 選擇器將不匹配任何 Pod。

  • unhealthyPodEvictionPolicy (string)

    UnhealthyPodEvictionPolicy 定義了何時應考慮驅逐不健康 Pod 的標準。當前實現考慮健康的 Pod,即 status.conditions 項的 type="Ready" 且 status="True" 的 Pod。

    有效策略包括 IfHealthyBudget 和 AlwaysAllow。如果未指定策略,將使用預設行為,對應於 IfHealthyBudget 策略。

    IfHealthyBudget 策略意味著正在執行但尚未健康的 Pod (status.phase="Running") 只有在被保護的應用程式未中斷 (status.currentHealthy 至少等於 status.desiredHealthy) 時才能被驅逐。健康 Pod 將受 PDB 的驅逐約束。

    AlwaysAllow 策略意味著所有正在執行但尚未健康的 Pod (status.phase="Running") 都被視為已中斷,並且無論是否滿足 PDB 中的條件都可以被驅逐。這意味著一個已中斷應用程式的潛在執行 Pod 可能沒有機會變健康。健康 Pod 將受 PDB 的驅逐約束。

    未來可能會新增其他策略。進行驅逐決策的客戶端應在遇到此欄位中未識別的策略時,拒絕驅逐不健康的 Pod。

PodDisruptionBudgetStatus

PodDisruptionBudgetStatus 代表關於 PodDisruptionBudget 狀態的資訊。狀態可能落後於系統的實際狀態。


  • currentHealthy (int32), required

    當前健康 Pod 的數量

  • desiredHealthy (int32), required

    最少期望的健康 Pod 數量

  • disruptionsAllowed (int32), required

    當前允許的 Pod 中斷數量。

  • expectedPods (int32), required

    此中斷預算所計數的 Pod 的總數

  • conditions ([]Condition)

    補丁策略:按鍵 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 包含有關其驅逐已被 API 伺服器驅逐子資源處理程式處理但尚未被 PodDisruptionBudget 控制器觀察到的 Pod 的資訊。Pod 將從 API 伺服器處理驅逐請求時到 Pod 被 PDB 控制器視為已標記刪除時(或在超時後)在此對映中。對映中的鍵是 Pod 的名稱,值是 API 伺服器處理驅逐請求的時間。如果刪除未發生並且 Pod 仍然存在,PodDisruptionBudget 控制器將在一段時間後自動將其從列表中刪除。如果一切順利,此對映大部分時間應為空。此對映中的大量條目可能表明 Pod 刪除存在問題。

    Time 是 time.Time 的一個包裝器,支援正確地編組到 YAML 和 JSON。提供了 time 包提供的許多工廠方法的包裝器。

  • observedGeneration (int64)

    更新此 PDB 狀態時觀察到的最近一代。DisruptionsAllowed 和其他狀態資訊僅在 observedGeneration 等於 PDB 的物件 generation 時才有效。

PodDisruptionBudgetList

PodDisruptionBudgetList 是 PodDisruptionBudgets 的集合。


操作


get 讀取指定的 PodDisruptionBudget

HTTP 請求

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

引數

  • name (在路徑中): string,必填

    PodDisruptionBudget 的名稱

  • namespace (在路徑中): string,必填

    名稱空間

  • pretty (在查詢中): string

    pretty

響應

200 (PodDisruptionBudget): OK

401: 未授權

get 讀取指定的 PodDisruptionBudget 的狀態

HTTP 請求

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

引數

  • name (在路徑中): string,必填

    PodDisruptionBudget 的名稱

  • namespace (在路徑中): string,必填

    名稱空間

  • pretty (在查詢中): string

    pretty

響應

200 (PodDisruptionBudget): OK

401: 未授權

list 列出或監視 PodDisruptionBudget 型別的物件

HTTP 請求

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

引數

響應

200 (PodDisruptionBudgetList): OK

401: 未授權

list 列出或監視 PodDisruptionBudget 型別的物件

HTTP 請求

GET /apis/policy/v1/poddisruptionbudgets

引數

響應

200 (PodDisruptionBudgetList): OK

401: 未授權

create 建立一個 PodDisruptionBudget

HTTP 請求

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

引數

響應

200 (PodDisruptionBudget): OK

201 (PodDisruptionBudget): Created

202 (PodDisruptionBudget): Accepted

401: 未授權

update 替換指定的 PodDisruptionBudget

HTTP 請求

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

引數

響應

200 (PodDisruptionBudget): OK

201 (PodDisruptionBudget): Created

401: 未授權

update 替換指定的 PodDisruptionBudget 的狀態

HTTP 請求

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

引數

響應

200 (PodDisruptionBudget): OK

201 (PodDisruptionBudget): Created

401: 未授權

patch 部分更新指定的 PodDisruptionBudget

HTTP 請求

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

引數

  • name (在路徑中): string,必填

    PodDisruptionBudget 的名稱

  • namespace (在路徑中): string,必填

    名稱空間

  • body: Patch,必需

  • dryRun (在查詢中): string

    dryRun

  • fieldManager (在查詢中): string

    fieldManager

  • fieldValidation (在查詢中): string

    fieldValidation

  • force (在查詢中): boolean

    force

  • pretty (在查詢中): string

    pretty

響應

200 (PodDisruptionBudget): OK

201 (PodDisruptionBudget): Created

401: 未授權

patch 部分更新指定的 PodDisruptionBudget 的狀態

HTTP 請求

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

引數

  • name (在路徑中): string,必填

    PodDisruptionBudget 的名稱

  • namespace (在路徑中): string,必填

    名稱空間

  • body: Patch,必需

  • dryRun (在查詢中): string

    dryRun

  • fieldManager (在查詢中): string

    fieldManager

  • fieldValidation (在查詢中): string

    fieldValidation

  • force (在查詢中): boolean

    force

  • pretty (在查詢中): string

    pretty

響應

200 (PodDisruptionBudget): OK

201 (PodDisruptionBudget): Created

401: 未授權

delete 刪除一個 PodDisruptionBudget

HTTP 請求

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

引數

響應

200 (Status): OK

202 (Status): 已接受

401: 未授權

deletecollection 刪除 PodDisruptionBudget 的集合

HTTP 請求

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

引數

響應

200 (Status): OK

401: 未授權

本頁面是自動生成的。

如果你打算報告此頁面存在的問題,請在問題描述中提及此頁面是自動生成的。修復可能需要在 Kubernetes 專案的其他地方進行。

最後修改時間:2025 年 4 月 24 日上午 9:14 PST:v1.33 的 Markdown API 參考 (b84ec30bbb)