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 處於不可用狀態,則允許驅逐。例如,可以透過指定 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 的集合。
apiVersion: policy/v1
kind: PodDisruptionBudgetList
metadata (ListMeta)
標準物件的元資料。更多資訊:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
items ([]PodDisruptionBudget), required
Items 是 PodDisruptionBudgets 的列表
操作
get
讀取指定的 PodDisruptionBudget
HTTP 請求
GET /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}
引數
name (在路徑中): string,必填
PodDisruptionBudget 的名稱
namespace (在路徑中): string,必填
pretty (在查詢中): string
響應
200 (PodDisruptionBudget): OK
401: 未授權
get
讀取指定的 PodDisruptionBudget 的狀態
HTTP 請求
GET /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}/status
引數
name (在路徑中): string,必填
PodDisruptionBudget 的名稱
namespace (在路徑中): string,必填
pretty (在查詢中): string
響應
200 (PodDisruptionBudget): OK
401: 未授權
list
列出或監視 PodDisruptionBudget 型別的物件
HTTP 請求
GET /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets
引數
namespace (在路徑中): string,必填
allowWatchBookmarks (在查詢中): boolean
continue (在查詢中): string
fieldSelector (在查詢中): string
labelSelector (在查詢中): string
limit (在查詢中): integer
pretty (在查詢中): string
resourceVersion (在查詢中): string
resourceVersionMatch (在查詢中): string
sendInitialEvents (在查詢中): boolean
timeoutSeconds (在查詢中): integer
watch (在查詢中): boolean
響應
200 (PodDisruptionBudgetList): OK
401: 未授權
list
列出或監視 PodDisruptionBudget 型別的物件
HTTP 請求
GET /apis/policy/v1/poddisruptionbudgets
引數
allowWatchBookmarks (在查詢中): boolean
continue (在查詢中): string
fieldSelector (在查詢中): string
labelSelector (在查詢中): string
limit (在查詢中): integer
pretty (在查詢中): string
resourceVersion (在查詢中): string
resourceVersionMatch (在查詢中): string
sendInitialEvents (在查詢中): boolean
timeoutSeconds (在查詢中): integer
watch (在查詢中): boolean
響應
200 (PodDisruptionBudgetList): OK
401: 未授權
create
建立一個 PodDisruptionBudget
HTTP 請求
POST /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets
引數
namespace (在路徑中): string,必填
body: PodDisruptionBudget, required
dryRun (在查詢中): string
fieldManager (在查詢中): string
fieldValidation (在查詢中): string
pretty (在查詢中): string
響應
200 (PodDisruptionBudget): OK
201 (PodDisruptionBudget): Created
202 (PodDisruptionBudget): Accepted
401: 未授權
update
替換指定的 PodDisruptionBudget
HTTP 請求
PUT /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}
引數
name (在路徑中): string,必填
PodDisruptionBudget 的名稱
namespace (在路徑中): string,必填
body: PodDisruptionBudget, required
dryRun (在查詢中): string
fieldManager (在查詢中): string
fieldValidation (在查詢中): string
pretty (在查詢中): string
響應
200 (PodDisruptionBudget): OK
201 (PodDisruptionBudget): Created
401: 未授權
update
替換指定的 PodDisruptionBudget 的狀態
HTTP 請求
PUT /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}/status
引數
name (在路徑中): string,必填
PodDisruptionBudget 的名稱
namespace (在路徑中): string,必填
body: PodDisruptionBudget, required
dryRun (在查詢中): string
fieldManager (在查詢中): string
fieldValidation (在查詢中): string
pretty (在查詢中): string
響應
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
fieldManager (在查詢中): string
fieldValidation (在查詢中): string
force (在查詢中): boolean
pretty (在查詢中): string
響應
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
fieldManager (在查詢中): string
fieldValidation (在查詢中): string
force (在查詢中): boolean
pretty (在查詢中): string
響應
200 (PodDisruptionBudget): OK
201 (PodDisruptionBudget): Created
401: 未授權
delete
刪除一個 PodDisruptionBudget
HTTP 請求
DELETE /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}
引數
name (在路徑中): string,必填
PodDisruptionBudget 的名稱
namespace (在路徑中): string,必填
body: DeleteOptions
dryRun (在查詢中): string
gracePeriodSeconds (在查詢中): integer
ignoreStoreReadErrorWithClusterBreakingPotential (在查詢中): boolean
pretty (在查詢中): string
propagationPolicy (在查詢中): string
響應
200 (Status): OK
202 (Status): 已接受
401: 未授權
deletecollection
刪除 PodDisruptionBudget 的集合
HTTP 請求
DELETE /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets
引數
namespace (在路徑中): string,必填
body: DeleteOptions
continue (在查詢中): string
dryRun (在查詢中): string
fieldSelector (在查詢中): string
gracePeriodSeconds (在查詢中): integer
ignoreStoreReadErrorWithClusterBreakingPotential (在查詢中): boolean
labelSelector (在查詢中): string
limit (在查詢中): integer
pretty (在查詢中): string
propagationPolicy (在查詢中): string
resourceVersion (在查詢中): string
resourceVersionMatch (在查詢中): string
sendInitialEvents (在查詢中): boolean
timeoutSeconds (在查詢中): integer
響應
200 (Status): OK
401: 未授權
本頁面是自動生成的。
如果你打算報告此頁面存在的問題,請在問題描述中提及此頁面是自動生成的。修復可能需要在 Kubernetes 專案的其他地方進行。