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), required
serviceName 是管理此 StatefulSet 的服务的名称。此服务必须在 StatefulSet 之前存在,并负责该集的网络身份。Pod 获取遵循以下模式的 DNS/主机名:pod-specific-string.serviceName.default.svc.cluster.local,其中“pod-specific-string”由 StatefulSet 控制器管理。
selector (LabelSelector), required
selector 是对应该匹配副本数量的 Pod 的标签查询。它必须与 Pod 模板的标签匹配。更多信息:https://kubernetes.ac.cn/docs/concepts/overview/working-with-objects/labels/#label-selectors
template (PodTemplateSpec), required
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 控制器将用来更新 StatefulSet 中 Pod 的 StatefulSetUpdateStrategy。
StatefulSetUpdateStrategy 指示 StatefulSet 控制器将用来执行更新的策略。它包括执行指示策略的更新所需的任何其他参数。
updateStrategy.type (string)
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 保持不变。这有助于能够进行基于金丝雀的部署。默认值为 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 创建的持久卷声明的生命周期。默认情况下,所有持久卷声明都是根据需要创建的,并保留到手动删除为止。此策略允许更改生命周期,例如在删除 StatefulSet 时或在缩减其 Pod 时删除持久卷声明。这需要启用 StatefulSetAutoDeletePVC 功能网关,该网关为 alpha。+optional
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。使用 ordinals 字段需要启用 StatefulSetStartOrdinal 功能网关,该网关为 beta。
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)
补丁策略:按键
type
合并表示 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 的 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), required
Items 是 stateful set 的列表。
操作
get
读取指定的 StatefulSet
HTTP 请求
GET /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}
参数
name (在路径中): string, required
StatefulSet 的名称
namespace (在路径中): string, required
pretty (在查询中): string
响应
200 (StatefulSet): OK
401: 未经授权
get
读取指定 StatefulSet 的状态
HTTP 请求
GET /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status
参数
name (在路径中): string, required
StatefulSet 的名称
namespace (在路径中): string, required
pretty (在查询中): string
响应
200 (StatefulSet): OK
401: 未经授权
list
列出或观察 StatefulSet 类型的对象
HTTP 请求
GET /apis/apps/v1/namespaces/{namespace}/statefulsets
参数
namespace (在路径中): string, required
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, required
body: StatefulSet, required
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, required
StatefulSet 的名称
namespace (在路径中): string, required
body: StatefulSet, required
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, required
StatefulSet 的名称
namespace (在路径中): string, required
body: StatefulSet, required
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, required
StatefulSet 的名称
namespace (在路径中): string, required
body: Patch, required
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, required
StatefulSet 的名称
namespace (在路径中): string, required
body: Patch, required
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, required
StatefulSet 的名称
namespace (在路径中): string, required
body: DeleteOptions
dryRun (在查询中): string
gracePeriodSeconds (在查询中): integer
pretty (在查询中): string
propagationPolicy (在查询中): string
响应
200 (Status): OK
202 (Status): 已接受
401: 未经授权
deletecollection
删除 StatefulSet 的集合
HTTP 请求
DELETE /apis/apps/v1/namespaces/{namespace}/statefulsets
参数
namespace (在路径中): string, required
body: DeleteOptions
continue (在查询中): string
dryRun (在查询中): string
fieldSelector (在查询中): string
gracePeriodSeconds (在查询中): integer
labelSelector (在查询中): string
limit (在查询中): integer
pretty (在查询中): string
propagationPolicy (在查询中): string
resourceVersion (在查询中): string
resourceVersionMatch (在查询中): string
sendInitialEvents (在查询中): boolean
timeoutSeconds (在查询中): integer
响应
200 (Status): OK
401: 未经授权
此页面是自动生成的。
如果您打算报告此页面出现的问题,请在您的问题描述中提及该页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。