部署

Deployment 實現了 Pods 和 ReplicaSets 的宣告式更新。

apiVersion: apps/v1

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

部署

Deployment 實現了 Pods 和 ReplicaSets 的宣告式更新。


DeploymentSpec

DeploymentSpec 是 Deployment 期望行為的規範。


  • selector (LabelSelector),必需

    Pod 的標籤選擇器。其 Pod 被此部署選擇的現有 ReplicaSet 將受到此部署的影響。它必須與 Pod 模板的標籤匹配。

  • template (PodTemplateSpec),必需

    Template 描述了將被建立的 Pod。唯一允許的 template.spec.restartPolicy 值為“Always”。

  • replicas (int32)

    所需的 Pod 數量。這是一個指標,用於區分顯式零和未指定。預設為 1。

  • minReadySeconds (int32)

    一個新建立的 Pod 在其任何容器未崩潰的情況下被視為可用的最小就緒秒數。預設為 0(Pod 一旦就緒即被視為可用)。

  • strategy (DeploymentStrategy)

    補丁策略:retainKeys

    用於將現有 Pod 替換為新 Pod 的部署策略。

    DeploymentStrategy 描述瞭如何用新 Pod 替換現有 Pod。

    • strategy.type (字串)

      部署型別。可以是“Recreate”或“RollingUpdate”。預設為 RollingUpdate。

    • strategy.rollingUpdate (RollingUpdateDeployment)

      滾動更新配置引數。僅當 DeploymentStrategyType = RollingUpdate 時存在。

      控制滾動更新期望行為的規範。

      • strategy.rollingUpdate.maxSurge (IntOrString)

        可以超出所需 Pod 數量的最大 Pod 排程數。值可以是絕對數字(例如:5)或所需 Pod 的百分比(例如:10%)。如果 MaxUnavailable 為 0,則此值不能為 0。絕對數字透過向上取整從百分比計算。預設為 25%。示例:當此值設定為 30% 時,滾動更新開始時可以立即擴充套件新的 ReplicaSet,使得舊 Pod 和新 Pod 的總數不超過所需 Pod 的 130%。一旦舊 Pod 被終止,可以進一步擴充套件新的 ReplicaSet,確保在更新期間任何時間執行的 Pod 總數最多為所需 Pod 的 130%。

        IntOrString 是一種可以容納 int32 或字串的型別。在 JSON 或 YAML 編組和解組中使用時,它會生成或消費內部型別。這允許您,例如,有一個可以接受名稱或數字的 JSON 欄位。

      • strategy.rollingUpdate.maxUnavailable (IntOrString)

        更新期間可以不可用的最大 Pod 數量。值可以是絕對數字(例如:5)或所需 Pod 的百分比(例如:10%)。絕對數字透過向下取整從百分比計算。如果 MaxSurge 為 0,則此值不能為 0。預設為 25%。示例:當此值設定為 30% 時,滾動更新開始時可以立即將舊 ReplicaSet 縮減到所需 Pod 的 70%。一旦新 Pod 準備就緒,可以進一步縮減舊 ReplicaSet,然後擴充套件新的 ReplicaSet,確保在更新期間任何時間可用的 Pod 總數至少為所需 Pod 的 70%。

        IntOrString 是一種可以容納 int32 或字串的型別。在 JSON 或 YAML 編組和解組中使用時,它會生成或消費內部型別。這允許您,例如,有一個可以接受名稱或數字的 JSON 欄位。

  • revisionHistoryLimit (int32)

    為允許回滾而保留的舊 ReplicaSet 的數量。這是一個指標,用於區分顯式零和未指定。預設為 10。

  • progressDeadlineSeconds (int32)

    部署在被視為失敗之前取得進展的最大時間(以秒為單位)。部署控制器將繼續處理失敗的部署,並在部署狀態中顯示帶有 ProgressDeadlineExceeded 原因的條件。請注意,在部署暫停期間不會估計進度。預設為 600 秒。

  • paused (布林值)

    指示部署已暫停。

DeploymentStatus

DeploymentStatus 是最近觀察到的部署狀態。


  • replicas (int32)

    此部署目標(其標籤與選擇器匹配)的非終止 Pod 的總數。

  • availableReplicas (int32)

    此部署目標(至少 minReadySeconds 準備就緒)的可用非終止 Pod 的總數。

  • readyReplicas (int32)

    此部署目標且處於 Ready 狀態的非終止 Pod 的總數。

  • unavailableReplicas (int32)

    此部署目標中不可用 Pod 的總數。這是部署實現 100% 可用容量仍所需的 Pod 總數。它們可能是正在執行但尚未可用的 Pod,也可能是尚未建立的 Pod。

  • updatedReplicas (int32)

    此部署目標且具有所需模板規範的非終止 Pod 的總數。

  • terminatingReplicas (int32)

    此部署目標中正在終止的 Pod 的總數。終止中的 Pod 具有非空 .metadata.deletionTimestamp 並且尚未達到 Failed 或 Succeeded .status.phase。

    這是一個 Alpha 欄位。啟用 DeploymentReplicaSetTerminatingReplicas 才能使用此欄位。

  • collisionCount (int32)

    部署的雜湊衝突計數。部署控制器在需要為最新 ReplicaSet 建立名稱時,使用此欄位作為避免衝突的機制。

  • conditions ([]DeploymentCondition)

    補丁策略:按鍵 type 合併

    對映:合併時將保留鍵型別上的唯一值

    表示部署當前狀態的最新可用觀察結果。

    DeploymentCondition 描述了部署在某個時間點的狀態。

    • conditions.status (string),必需

      條件的 status,可以是 True、False、Unknown 之一。

    • conditions.type (string),必需

      部署條件的型別。

    • conditions.lastTransitionTime (Time)

      條件上次從一種狀態轉換到另一種狀態的時間。

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

    • conditions.lastUpdateTime (Time)

      此條件上次更新的時間。

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

    • conditions.message (string)

      一個人類可讀的訊息,指示有關轉換的詳細資訊。

    • conditions.reason (string)

      條件上次轉換的原因。

  • observedGeneration (int64)

    部署控制器觀察到的代數。

DeploymentList

DeploymentList 是 Deployment 的列表。


  • apiVersion: apps/v1

  • kind: DeploymentList

  • metadata (ListMeta)

    標準列表元資料。

  • items ([]Deployment), 必需

    Items 是 Deployment 的列表。

操作


get 讀取指定的 Deployment

HTTP 請求

GET /apis/apps/v1/namespaces/{namespace}/deployments/{name}

引數

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

    Deployment 的名稱

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

    名稱空間

  • pretty (在查詢中): string

    pretty

響應

200 (Deployment): 正常

401: 未授權

get 讀取指定 Deployment 的狀態

HTTP 請求

GET /apis/apps/v1/namespaces/{namespace}/deployments/{name}/status

引數

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

    Deployment 的名稱

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

    名稱空間

  • pretty (在查詢中): string

    pretty

響應

200 (Deployment): 正常

401: 未授權

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

HTTP 請求

GET /apis/apps/v1/namespaces/{namespace}/deployments

引數

響應

200 (DeploymentList): 正常

401: 未授權

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

HTTP 請求

GET /apis/apps/v1/deployments

引數

響應

200 (DeploymentList): 正常

401: 未授權

create 建立一個 Deployment

HTTP 請求

POST /apis/apps/v1/namespaces/{namespace}/deployments

引數

響應

200 (Deployment): 正常

201 (Deployment): 已建立

202 (Deployment): 已接受

401: 未授權

update 替換指定的 Deployment

HTTP 請求

PUT /apis/apps/v1/namespaces/{namespace}/deployments/{name}

引數

響應

200 (Deployment): 正常

201 (Deployment): 已建立

401: 未授權

update 替換指定 Deployment 的狀態

HTTP 請求

PUT /apis/apps/v1/namespaces/{namespace}/deployments/{name}/status

引數

響應

200 (Deployment): 正常

201 (Deployment): 已建立

401: 未授權

patch 部分更新指定的 Deployment

HTTP 請求

PATCH /apis/apps/v1/namespaces/{namespace}/deployments/{name}

引數

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

    Deployment 的名稱

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

    名稱空間

  • body: Patch,必需

  • dryRun (在查詢中): string

    dryRun

  • fieldManager (在查詢中): string

    fieldManager

  • fieldValidation (在查詢中): string

    fieldValidation

  • force (在查詢中): boolean

    force

  • pretty (在查詢中): string

    pretty

響應

200 (Deployment): 正常

201 (Deployment): 已建立

401: 未授權

patch 部分更新指定 Deployment 的狀態

HTTP 請求

PATCH /apis/apps/v1/namespaces/{namespace}/deployments/{name}/status

引數

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

    Deployment 的名稱

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

    名稱空間

  • body: Patch,必需

  • dryRun (在查詢中): string

    dryRun

  • fieldManager (在查詢中): string

    fieldManager

  • fieldValidation (在查詢中): string

    fieldValidation

  • force (在查詢中): boolean

    force

  • pretty (在查詢中): string

    pretty

響應

200 (Deployment): 正常

201 (Deployment): 已建立

401: 未授權

delete 刪除一個 Deployment

HTTP 請求

DELETE /apis/apps/v1/namespaces/{namespace}/deployments/{name}

引數

響應

200 (Status): OK

202 (Status): 已接受

401: 未授權

deletecollection 刪除 Deployment 集合

HTTP 請求

DELETE /apis/apps/v1/namespaces/{namespace}/deployments

引數

響應

200 (Status): OK

401: 未授權

本頁面是自動生成的。

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

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