StatefulSet
apiVersion: apps/v1
import "k8s.io/api/apps/v1"
StatefulSet
StatefulSet 代表具有一致身份的 Pod 集合。身份定義為:
- 網路:一個穩定的 DNS 和主機名。
- 儲存:根據請求數量的 VolumeClaims。
StatefulSet 保證給定的網路身份始終對映到相同的儲存身份。
apiVersion: apps/v1
kind: StatefulSet
metadata (ObjectMeta)
標準物件的元資料。更多資訊:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (StatefulSetSpec)
Spec 定義了此集合中 Pod 的所需身份。
status (StatefulSetStatus)
Status 是此 StatefulSet 中 Pod 的當前狀態。此資料可能在某個時間窗內過時。
StatefulSetSpec
StatefulSetSpec 是 StatefulSet 的規範。
serviceName (string)
serviceName 是管理此 StatefulSet 的服務的名稱。此服務必須在 StatefulSet 之前存在,並負責該集合的網路身份。Pod 獲取的 DNS/主機名遵循以下模式:pod-specific-string.serviceName.default.svc.cluster.local,其中“pod-specific-string”由 StatefulSet 控制器管理。
selector (LabelSelector),必需
selector 是一個針對 Pod 的標籤查詢,應與副本數量匹配。它必須與 Pod 模板的標籤匹配。更多資訊:https://kubernetes.club.tw/docs/concepts/overview/working-with-objects/labels/#label-selectors
template (PodTemplateSpec),必需
template 是描述在檢測到副本不足時將建立的 Pod 的物件。由 StatefulSet 建立的每個 Pod 都將滿足此模板,但與 StatefulSet 的其餘部分具有唯一的身份。每個 Pod 將以 <statefulsetname>-<podindex> 的格式命名。例如,一個名為“web”且索引號為“3”的 StatefulSet 中的 Pod 將被命名為“web-3”。唯一允許的 template.spec.restartPolicy 值為“Always”。
replicas (int32)
replicas 是給定模板的所需副本數量。這些副本是相同模板的例項化,但各個副本也具有一致的身份。如果未指定,則預設為 1。
updateStrategy (StatefulSetUpdateStrategy)
updateStrategy 指示在對模板進行修訂時,將用於更新 StatefulSet 中 Pod 的 StatefulSetUpdateStrategy。
StatefulSetUpdateStrategy 指示 StatefulSet 控制器將用於執行更新的策略。它包括執行指示策略更新所需的任何附加引數。
updateStrategy.type (string)
Type 指示 StatefulSetUpdateStrategy 的型別。預設為 RollingUpdate。
updateStrategy.rollingUpdate (RollingUpdateStatefulSetStrategy)
當 Type 為 RollingUpdateStatefulSetStrategyType 時,RollingUpdate 用於傳遞引數。
RollingUpdateStatefulSetStrategy 用於傳遞 RollingUpdateStatefulSetStrategyType 的引數。
updateStrategy.rollingUpdate.maxUnavailable (IntOrString)
更新期間最大不可用 Pod 數量。值可以是絕對數字(例如:5)或所需 Pod 的百分比(例如:10%)。絕對數字透過向上取整從百分比計算。此值不能為 0。預設為 1。此欄位是 alpha 級別,僅由啟用 MaxUnavailableStatefulSet 功能的伺服器遵守。該欄位適用於範圍 0 到 Replicas-1 中的所有 Pod。這意味著如果範圍 0 到 Replicas-1 中有任何不可用的 Pod,它將被計入 MaxUnavailable。
IntOrString 是一種可以容納 int32 或字串的型別。在 JSON 或 YAML 編組和解組時,它會生成或使用內部型別。這允許您擁有一個 JSON 欄位,例如,可以接受名稱或數字。
updateStrategy.rollingUpdate.partition (int32)
Partition 指示 StatefulSet 應分割槽進行更新的序號。在滾動更新期間,所有從序號 Replicas-1 到 Partition 的 Pod 都會被更新。所有從序號 Partition-1 到 0 的 Pod 保持不變。這有助於進行基於金絲雀的部署。預設值為 0。
podManagementPolicy (string)
podManagementPolicy 控制在初始擴容、替換節點上的 Pod 或縮容期間如何建立 Pod。預設策略是
OrderedReady
,Pod 按遞增順序建立(pod-0,然後 pod-1,以此類推),控制器會等待每個 Pod 準備就緒後才繼續。縮容時,Pod 以相反順序刪除。另一種策略是Parallel
,它將並行建立 Pod 以匹配所需規模而不等待,並在縮容時一次性刪除所有 Pod。revisionHistoryLimit (int32)
revisionHistoryLimit 是 StatefulSet 修訂歷史中將保留的最大修訂數量。修訂歷史包括所有未由當前應用的 StatefulSetSpec 版本表示的修訂。預設值為 10。
volumeClaimTemplates ([]PersistentVolumeClaim)
原子性:在合併期間將被替換
volumeClaimTemplates 是 Pod 允許引用的宣告列表。StatefulSet 控制器負責以保持 Pod 身份的方式將網路身份對映到宣告。此列表中的每個宣告必須在模板中至少有一個容器中具有一個匹配(按名稱)的 volumeMount。此列表中的宣告優先於模板中具有相同名稱的任何卷。
minReadySeconds (int32)
新建立的 Pod 在沒有任何容器崩潰的情況下應保持就緒的最短秒數,才能被認為是可用的。預設為 0(Pod 一旦準備就緒就被認為是可用的)
persistentVolumeClaimRetentionPolicy (StatefulSetPersistentVolumeClaimRetentionPolicy)
persistentVolumeClaimRetentionPolicy 描述了從 volumeClaimTemplates 建立的持久卷宣告的生命週期。預設情況下,所有持久卷宣告都按需建立並保留,直到手動刪除。此策略允許更改生命週期,例如在刪除有狀態集或縮容 Pod 時刪除持久卷宣告。
StatefulSetPersistentVolumeClaimRetentionPolicy 描述了用於從 StatefulSet VolumeClaimTemplates 建立的 PVC 的策略。
persistentVolumeClaimRetentionPolicy.whenDeleted (string)
WhenDeleted 指定在刪除 StatefulSet 時,從 StatefulSet VolumeClaimTemplates 建立的 PVC 會發生什麼。預設策略
Retain
導致 PVC 不受 StatefulSet 刪除的影響。Delete
策略導致這些 PVC 被刪除。persistentVolumeClaimRetentionPolicy.whenScaled (string)
WhenScaled 指定在 StatefulSet 縮容時,從 StatefulSet VolumeClaimTemplates 建立的 PVC 會發生什麼。預設策略
Retain
導致 PVC 不受縮容的影響。Delete
策略導致複製計數以上的多餘 Pod 的相關 PVC 被刪除。
ordinals (StatefulSetOrdinals)
ordinals 控制 StatefulSet 中副本索引的編號。預設的 ordinals 行為為第一個副本分配“0”索引,併為每個附加請求的副本將索引遞增 1。
StatefulSetOrdinals 描述了用於此 StatefulSet 中副本序號分配的策略。
ordinals.start (int32)
start 是表示第一個副本索引的數字。它可用於從替代索引(例如:1-indexed)而非預設的 0-indexed 名稱對副本進行編號,或用於協調副本從一個 StatefulSet 漸進式地移動到另一個。如果設定,副本索引將在範圍:[.spec.ordinals.start, .spec.ordinals.start + .spec.replicas) 內。如果未設定,則預設為 0。副本索引將在範圍:[0, .spec.replicas) 內。
StatefulSetStatus
StatefulSetStatus 代表 StatefulSet 的當前狀態。
replicas (int32),必需
replicas 是由 StatefulSet 控制器建立的 Pod 數量。
readyReplicas (int32)
readyReplicas 是為此 StatefulSet 建立的具有 Ready Condition 的 Pod 數量。
currentReplicas (int32)
currentReplicas 是由 StatefulSet 控制器從 currentRevision 指示的 StatefulSet 版本建立的 Pod 數量。
updatedReplicas (int32)
updatedReplicas 是由 StatefulSet 控制器從 updateRevision 指示的 StatefulSet 版本建立的 Pod 數量。
availableReplicas (int32)
此有狀態集目標(至少 minReadySeconds 已就緒)的可用 Pod 總數。
collisionCount (int32)
collisionCount 是 StatefulSet 的雜湊衝突計數。StatefulSet 控制器在需要為最新 ControllerRevision 建立名稱時,將此欄位用作衝突避免機制。
conditions ([]StatefulSetCondition)
補丁策略:按鍵
type
合併對映:合併時將保留鍵型別上的唯一值
代表有狀態集當前狀態的最新可用觀察結果。
StatefulSetCondition 描述了有狀態集在某個時間點的狀態。
conditions.status (string),必需
條件的 status,可以是 True、False、Unknown 之一。
conditions.type (string),必需
有狀態集條件的型別。
conditions.lastTransitionTime (Time)
條件上次從一種狀態轉換到另一種狀態的時間。
Time 是 time.Time 的一個包裝器,支援正確地編組到 YAML 和 JSON。提供了 time 包提供的許多工廠方法的包裝器。
conditions.message (string)
一個人類可讀的訊息,指示有關轉換的詳細資訊。
conditions.reason (string)
條件上次轉換的原因。
currentRevision (string)
currentRevision,如果非空,表示用於生成序列 [0,currentReplicas) 中的 Pod 的 StatefulSet 版本。
updateRevision (string)
updateRevision,如果非空,表示用於生成序列 [replicas-updatedReplicas,replicas) 中的 Pod 的 StatefulSet 版本。
observedGeneration (int64)
observedGeneration 是此 StatefulSet 觀察到的最新一代。它對應於 StatefulSet 的 generation,該 generation 在 API 伺服器修改時更新。
StatefulSetList
StatefulSetList 是 StatefulSet 的集合。
apiVersion: apps/v1
kind: StatefulSetList
metadata (ListMeta)
標準列表的元資料。更多資訊:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
items ([]StatefulSet),必需
Items 是有狀態集的列表。
操作
get
讀取指定的 StatefulSet
HTTP 請求
GET /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}
引數
響應
200 (StatefulSet): OK
401: 未授權
get
讀取指定的 StatefulSet 的狀態
HTTP 請求
GET /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status
引數
響應
200 (StatefulSet): OK
401: 未授權
list
列出或監視 StatefulSet 型別的物件
HTTP 請求
GET /apis/apps/v1/namespaces/{namespace}/statefulsets
引數
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 (StatefulSetList): OK
401: 未授權
list
列出或監視 StatefulSet 型別的物件
HTTP 請求
GET /apis/apps/v1/statefulsets
引數
allowWatchBookmarks (在查詢中): boolean
continue (在查詢中): string
fieldSelector (在查詢中): string
labelSelector (在查詢中): string
limit (在查詢中): integer
pretty (在查詢中): string
resourceVersion (在查詢中): string
resourceVersionMatch (在查詢中): string
sendInitialEvents (在查詢中): boolean
timeoutSeconds (在查詢中): integer
watch (在查詢中): boolean
響應
200 (StatefulSetList): OK
401: 未授權
create
建立一個 StatefulSet
HTTP 請求
POST /apis/apps/v1/namespaces/{namespace}/statefulsets
引數
namespace (在路徑中): string,必填
body: StatefulSet,必需
dryRun (在查詢中): string
fieldManager (在查詢中): string
fieldValidation (在查詢中): string
pretty (在查詢中): string
響應
200 (StatefulSet): OK
201 (StatefulSet): 已建立
202 (StatefulSet): 已接受
401: 未授權
update
替換指定的 StatefulSet
HTTP 請求
PUT /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}
引數
name (在路徑中): string,必填
StatefulSet 的名稱
namespace (在路徑中): string,必填
body: StatefulSet,必需
dryRun (在查詢中): string
fieldManager (在查詢中): string
fieldValidation (在查詢中): string
pretty (在查詢中): string
響應
200 (StatefulSet): OK
201 (StatefulSet): 已建立
401: 未授權
update
替換指定的 StatefulSet 的狀態
HTTP 請求
PUT /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status
引數
name (在路徑中): string,必填
StatefulSet 的名稱
namespace (在路徑中): string,必填
body: StatefulSet,必需
dryRun (在查詢中): string
fieldManager (在查詢中): string
fieldValidation (在查詢中): string
pretty (在查詢中): string
響應
200 (StatefulSet): OK
201 (StatefulSet): 已建立
401: 未授權
patch
部分更新指定的 StatefulSet
HTTP 請求
PATCH /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}
引數
name (在路徑中): string,必填
StatefulSet 的名稱
namespace (在路徑中): string,必填
body: Patch,必需
dryRun (在查詢中): string
fieldManager (在查詢中): string
fieldValidation (在查詢中): string
force (在查詢中): boolean
pretty (在查詢中): string
響應
200 (StatefulSet): OK
201 (StatefulSet): 已建立
401: 未授權
patch
部分更新指定的 StatefulSet 的狀態
HTTP 請求
PATCH /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status
引數
name (在路徑中): string,必填
StatefulSet 的名稱
namespace (在路徑中): string,必填
body: Patch,必需
dryRun (在查詢中): string
fieldManager (在查詢中): string
fieldValidation (在查詢中): string
force (在查詢中): boolean
pretty (在查詢中): string
響應
200 (StatefulSet): OK
201 (StatefulSet): 已建立
401: 未授權
delete
刪除一個 StatefulSet
HTTP 請求
DELETE /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}
引數
name (在路徑中): string,必填
StatefulSet 的名稱
namespace (在路徑中): string,必填
body: DeleteOptions
dryRun (在查詢中): string
gracePeriodSeconds (在查詢中): integer
ignoreStoreReadErrorWithClusterBreakingPotential (在查詢中): boolean
pretty (在查詢中): string
propagationPolicy (在查詢中): string
響應
200 (Status): OK
202 (Status): 已接受
401: 未授權
deletecollection
刪除 StatefulSet 集合
HTTP 請求
DELETE /apis/apps/v1/namespaces/{namespace}/statefulsets
引數
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 專案的其他地方進行。