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 (字串), 必要
serviceName 是管理此 StatefulSet 的服務名稱。此服務必須在 StatefulSet 之前存在,並負責集合的網路身分識別。Pod 取得 DNS/主機名稱,其格式如下:pod-specific-string.serviceName.default.svc.cluster.local,其中 "pod-specific-string" 由 StatefulSet 控制器管理。
selector (LabelSelector), 必要
selector 是 Pod 的標籤查詢,應符合複本計數。它必須符合 Pod 範本的標籤。更多資訊: https://kubernetes.dev.org.tw/docs/concepts/overview/working-with-objects/labels/#label-selectors
template (PodTemplateSpec), 必要
template 是描述 Pod 的物件,如果偵測到複本不足,將會建立 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 (字串)
Type 指出 StatefulSetUpdateStrategy 的類型。預設值為 RollingUpdate。
updateStrategy.rollingUpdate (RollingUpdateStatefulSetStrategy)
RollingUpdate 用於在 Type 為 RollingUpdateStatefulSetStrategyType 時傳達參數。
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 保持不變。這有助於實現基於 Canary 的部署。預設值為 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)
Atomic: 將在合併期間被取代
volumeClaimTemplates 是 Pod 可以參考的宣告清單。StatefulSet 控制器負責以維護 Pod 身分的方式將網路身分對應到宣告。此清單中的每個宣告都必須在範本中的一個容器中至少有一個相符(依名稱)的 volumeMount。此清單中的宣告優先於範本中具有相同名稱的任何磁碟區。
minReadySeconds (int32)
新建立的 Pod 應處於就緒狀態的最小秒數,且其容器沒有任何崩潰,才被視為可用。預設值為 0(Pod 一旦就緒就會被視為可用)
persistentVolumeClaimRetentionPolicy (StatefulSetPersistentVolumeClaimRetentionPolicy)
persistentVolumeClaimRetentionPolicy 描述從 volumeClaimTemplates 建立的永久磁碟區宣告的生命週期。預設情況下,所有永久磁碟區宣告都會在需要時建立並保留,直到手動刪除。此策略允許變更生命週期,例如在刪除其 StatefulSet 或縮減其 Pod 規模時刪除永久磁碟區宣告。這需要啟用 StatefulSetAutoDeletePVC 功能閘道,該閘道為 Beta 版。
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 中副本索引的編號。預設序數行為為第一個副本分配 "0" 索引,並為每個額外請求的副本將索引遞增 1。
StatefulSetOrdinals 描述用於此 StatefulSet 中副本序數分配的策略。
ordinals.start (int32)
start 是表示第一個副本索引的數字。它可用於從預設的 0 索引名稱開始,從替代索引(例如:1 索引)對副本進行編號,或協調將副本從一個 StatefulSet 逐步移動到另一個 StatefulSet。如果設定,副本索引將在範圍內:[.spec.ordinals.start, .spec.ordinals.start + .spec.replicas)。如果未設定,則預設為 0。副本索引將在範圍內:[0, .spec.replicas)。
StatefulSetStatus
StatefulSetStatus 表示 StatefulSet 的目前狀態。
replicas (int32), required
replicas 是 StatefulSet 控制器建立的 Pod 數量。
readyReplicas (int32)
readyReplicas 是為此 StatefulSet 建立且具有就緒條件的 Pod 數量。
currentReplicas (int32)
currentReplicas 是由 StatefulSet 控制器從 currentRevision 指示的 StatefulSet 版本建立的 Pod 數量。
updatedReplicas (int32)
updatedReplicas 是由 StatefulSet 控制器從 updateRevision 指示的 StatefulSet 版本建立的 Pod 數量。
availableReplicas (int32)
此 StatefulSet 定位的可用 Pod 總數(至少準備就緒 minReadySeconds)。
collisionCount (int32)
collisionCount 是 StatefulSet 的雜湊衝突計數。當 StatefulSet 控制器需要為最新的 ControllerRevision 建立名稱時,會將此欄位用作衝突避免機制。
conditions ([]StatefulSetCondition)
Patch 策略:依鍵
type
合併Map:在合併期間,依鍵類型保留唯一值
表示 statefulset 目前狀態的最新可用觀察結果。
StatefulSetCondition 描述 statefulset 在特定時間點的狀態。
conditions.status (string), required
條件狀態,True、False、Unknown 其中之一。
conditions.type (string), required
statefulset 條件類型。
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 的世代,該世代在 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), required
Items 是 stateful set 的清單。
Operations
get
讀取指定的 StatefulSet
HTTP Request
GET /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}
Parameters
name (in path): string, required
StatefulSet 的名稱
namespace (in path): string, required
pretty (in query): string
Response
200 (StatefulSet): OK
401: 未經授權
get
讀取指定 StatefulSet 的狀態
HTTP Request
GET /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status
Parameters
name (in path): string, required
StatefulSet 的名稱
namespace (in path): string, required
pretty (in query): string
Response
200 (StatefulSet): OK
401: 未經授權
list
列出或監看 StatefulSet 種類的物件
HTTP Request
GET /apis/apps/v1/namespaces/{namespace}/statefulsets
Parameters
namespace (in path): string, required
allowWatchBookmarks (in query): boolean
continue (in query): string
fieldSelector (in query): string
labelSelector (in query): string
limit (in query): integer
pretty (in query): string
resourceVersion (in query): string
resourceVersionMatch (in query): string
sendInitialEvents (in query): boolean
timeoutSeconds (in query): integer
watch (in query): boolean
Response
200 (StatefulSetList): OK
401: 未經授權
list
列出或監看 StatefulSet 種類的物件
HTTP Request
GET /apis/apps/v1/statefulsets
Parameters
allowWatchBookmarks (in query): boolean
continue (in query): string
fieldSelector (in query): string
labelSelector (in query): string
limit (in query): integer
pretty (in query): string
resourceVersion (in query): string
resourceVersionMatch (in query): string
sendInitialEvents (in query): boolean
timeoutSeconds (in query): integer
watch (in query): boolean
Response
200 (StatefulSetList): OK
401: 未經授權
create
建立 StatefulSet
HTTP Request
POST /apis/apps/v1/namespaces/{namespace}/statefulsets
Parameters
namespace (in path): string, required
body: StatefulSet, required
dryRun (in query): string
fieldManager (in query): string
fieldValidation (in query): string
pretty (in query): string
Response
200 (StatefulSet): OK
201 (StatefulSet): 已建立
202 (StatefulSet): 已接受
401: 未經授權
update
取代指定的 StatefulSet
HTTP Request
PUT /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}
Parameters
name (in path): string, required
StatefulSet 的名稱
namespace (in path): string, required
body: StatefulSet, required
dryRun (in query): string
fieldManager (in query): string
fieldValidation (in query): string
pretty (in query): string
Response
200 (StatefulSet): OK
201 (StatefulSet): 已建立
401: 未經授權
update
取代指定 StatefulSet 的狀態
HTTP Request
PUT /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status
Parameters
name (in path): string, required
StatefulSet 的名稱
namespace (in path): string, required
body: StatefulSet, required
dryRun (in query): string
fieldManager (in query): string
fieldValidation (in query): string
pretty (in query): string
Response
200 (StatefulSet): OK
201 (StatefulSet): 已建立
401: 未經授權
patch
部分更新指定的 StatefulSet
HTTP Request
PATCH /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}
Parameters
name (in path): string, required
StatefulSet 的名稱
namespace (in path): string, required
body: Patch, required
dryRun (in query): string
fieldManager (in query): string
fieldValidation (in query): string
force (in query): boolean
pretty (in query): string
Response
200 (StatefulSet): OK
201 (StatefulSet): 已建立
401: 未經授權
patch
部分更新指定 StatefulSet 的狀態
HTTP Request
PATCH /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status
Parameters
name (in path): string, required
StatefulSet 的名稱
namespace (in path): string, required
body: Patch, required
dryRun (in query): string
fieldManager (in query): string
fieldValidation (in query): string
force (in query): boolean
pretty (in query): string
Response
200 (StatefulSet): OK
201 (StatefulSet): 已建立
401: 未經授權
delete
刪除 StatefulSet
HTTP Request
DELETE /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}
Parameters
name (in path): string, required
StatefulSet 的名稱
namespace (in path): string, required
body: DeleteOptions
dryRun (in query): string
gracePeriodSeconds (in query): integer
pretty (in query): string
propagationPolicy (in query): string
Response
200 (Status): OK
202 (Status): 已接受
401: 未經授權
deletecollection
刪除 StatefulSet 的集合
HTTP Request
DELETE /apis/apps/v1/namespaces/{namespace}/statefulsets
Parameters
namespace (in path): string, required
body: DeleteOptions
continue (in query): string
dryRun (in query): string
fieldSelector (in query): string
gracePeriodSeconds (in query): integer
labelSelector (in query): string
limit (in query): integer
pretty (in query): string
propagationPolicy (in query): string
resourceVersion (in query): string
resourceVersionMatch (in query): string
sendInitialEvents (in query): boolean
timeoutSeconds (in query): integer
Response
200 (Status): OK
401: 未經授權
此頁面為自動產生。
如果您計劃回報此頁面的問題,請在您的問題描述中提及此頁面為自動產生。修正可能需要在 Kubernetes 專案的其他地方進行。