StatefulSet
apiVersion: apps/v1
import "k8s.io/api/apps/v1"
StatefulSet
StatefulSet 表示一组具有一致身份的 Pod。身份定义为
- 网络:单个稳定的 DNS 和主机名。
- 存储:按需提供尽可能多的 VolumeClaim。
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.top/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 指示在对模板进行修订时,将使用 StatefulSetUpdateStrategy 来更新 StatefulSet 中的 Pod。
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 时删除持久卷声明。这需要启用 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”索引分配给第一个副本,并为请求的每个额外副本将索引加一。
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),必需
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)
此 StatefulSet 定位的可用 Pod 总数(至少准备就绪 minReadySeconds)。
collisionCount (int32)
collisionCount 是 StatefulSet 的哈希冲突计数。当需要为最新的 ControllerRevision 创建名称时,StatefulSet 控制器将此字段用作冲突避免机制。
conditions ([]StatefulSetCondition)
补丁策略:合并键
type
映射:在合并期间,将保留键类型上的唯一值
表示 statefulset 当前状态的最新可用观测值。
StatefulSetCondition 描述了 statefulset 在特定点的状态。
conditions.status (string),必需
状态的条件,为 True、False 或 Unknown 之一。
conditions.type (string),必需
statefulset 条件的类型。
conditions.lastTransitionTime (Time)
条件从一种状态转换到另一种状态的最后时间。
Time 是 time.Time 的包装器,支持正确编组为 YAML 和 JSON。为 time 包提供的许多工厂方法提供了包装器。
conditions.message (string)
一条人类可读的消息,指示有关转换的详细信息。
conditions.reason (string)
条件上次转换的原因。
currentRevision (string)
currentRevision(如果非空)表示用于生成序列 [0,currentReplicas) 中 Pod 的 StatefulSet 版本。
updateRevision (字符串)
updateRevision(如果非空)表示用于生成序列 [replicas-updatedReplicas,replicas) 中 Pod 的 StatefulSet 版本。
observedGeneration (int64)
observedGeneration 是此 StatefulSet 最近观察到的 generation。它对应于 StatefulSet 的 generation,该 generation 在 API Server 进行变更时会更新。
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 是 StatefulSet 的列表。
操作
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 (路径参数): 字符串,必需
allowWatchBookmarks (查询参数): 布尔值
continue (查询参数): 字符串
fieldSelector (查询参数): 字符串
labelSelector (查询参数): 字符串
limit (查询参数): 整数
pretty (查询参数): 字符串
resourceVersion (查询参数): 字符串
resourceVersionMatch (查询参数): 字符串
sendInitialEvents (查询参数): 布尔值
timeoutSeconds (查询参数): 整数
watch (查询参数): 布尔值
响应
200 (StatefulSetList): OK
401: 未授权
list
列出或监视 StatefulSet 类型的对象
HTTP 请求
GET /apis/apps/v1/statefulsets
参数
allowWatchBookmarks (查询参数): 布尔值
continue (查询参数): 字符串
fieldSelector (查询参数): 字符串
labelSelector (查询参数): 字符串
limit (查询参数): 整数
pretty (查询参数): 字符串
resourceVersion (查询参数): 字符串
resourceVersionMatch (查询参数): 字符串
sendInitialEvents (查询参数): 布尔值
timeoutSeconds (查询参数): 整数
watch (查询参数): 布尔值
响应
200 (StatefulSetList): OK
401: 未授权
create
创建一个 StatefulSet
HTTP 请求
POST /apis/apps/v1/namespaces/{namespace}/statefulsets
参数
namespace (路径参数): 字符串,必需
body: StatefulSet, 必需
dryRun (查询参数): 字符串
fieldManager (查询参数): 字符串
fieldValidation (查询参数): 字符串
pretty (查询参数): 字符串
响应
200 (StatefulSet): OK
201 (StatefulSet): 已创建
202 (StatefulSet): 已接受
401: 未授权
update
替换指定的 StatefulSet
HTTP 请求
PUT /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}
参数
name (路径参数): 字符串,必需
StatefulSet 的名称
namespace (路径参数): 字符串,必需
body: StatefulSet, 必需
dryRun (查询参数): 字符串
fieldManager (查询参数): 字符串
fieldValidation (查询参数): 字符串
pretty (查询参数): 字符串
响应
200 (StatefulSet): OK
201 (StatefulSet): 已创建
401: 未授权
update
替换指定的 StatefulSet 的状态
HTTP 请求
PUT /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status
参数
name (路径参数): 字符串,必需
StatefulSet 的名称
namespace (路径参数): 字符串,必需
body: StatefulSet, 必需
dryRun (查询参数): 字符串
fieldManager (查询参数): 字符串
fieldValidation (查询参数): 字符串
pretty (查询参数): 字符串
响应
200 (StatefulSet): OK
201 (StatefulSet): 已创建
401: 未授权
patch
部分更新指定的 StatefulSet
HTTP 请求
PATCH /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}
参数
name (路径参数): 字符串,必需
StatefulSet 的名称
namespace (路径参数): 字符串,必需
body: Patch, 必需
dryRun (查询参数): 字符串
fieldManager (查询参数): 字符串
fieldValidation (查询参数): 字符串
force (查询参数): 布尔值
pretty (查询参数): 字符串
响应
200 (StatefulSet): OK
201 (StatefulSet): 已创建
401: 未授权
patch
部分更新指定的 StatefulSet 的状态
HTTP 请求
PATCH /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status
参数
name (路径参数): 字符串,必需
StatefulSet 的名称
namespace (路径参数): 字符串,必需
body: Patch, 必需
dryRun (查询参数): 字符串
fieldManager (查询参数): 字符串
fieldValidation (查询参数): 字符串
force (查询参数): 布尔值
pretty (查询参数): 字符串
响应
200 (StatefulSet): OK
201 (StatefulSet): 已创建
401: 未授权
delete
删除一个 StatefulSet
HTTP 请求
DELETE /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}
参数
name (路径参数): 字符串,必需
StatefulSet 的名称
namespace (路径参数): 字符串,必需
body: DeleteOptions
dryRun (查询参数): 字符串
gracePeriodSeconds (查询参数): 整数
pretty (查询参数): 字符串
propagationPolicy (查询参数): 字符串
响应
200 (Status): OK
202 (Status): 已接受
401: 未授权
deletecollection
删除 StatefulSet 的集合
HTTP 请求
DELETE /apis/apps/v1/namespaces/{namespace}/statefulsets
参数
namespace (路径参数): 字符串,必需
body: DeleteOptions
continue (查询参数): 字符串
dryRun (查询参数): 字符串
fieldSelector (查询参数): 字符串
gracePeriodSeconds (查询参数): 整数
labelSelector (查询参数): 字符串
limit (查询参数): 整数
pretty (查询参数): 字符串
propagationPolicy (查询参数): 字符串
resourceVersion (查询参数): 字符串
resourceVersionMatch (查询参数): 字符串
sendInitialEvents (查询参数): 布尔值
timeoutSeconds (查询参数): 整数
响应
200 (Status): OK
401: 未授权
此页面是自动生成的。
如果您打算报告此页面的问题,请在您的问题描述中说明该页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。