StatefulSet

StatefulSet 代表一组具有一致身份的 Pod。

apiVersion: apps/v1

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

StatefulSet

StatefulSet 代表一组具有一致身份的 Pod。身份定义为

  • 网络:单个稳定的 DNS 和主机名。
  • 存储:如请求的许多 VolumeClaim。

StatefulSet 保证给定的网络身份将始终映射到相同的存储身份。


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.ac.cn/docs/concepts/overview/working-with-objects/labels/#label-selectors

  • template (PodTemplateSpec), required

    template 是描述如果检测到不足的副本将创建的 Pod 的对象。StatefulSet 戳出的每个 Pod 将满足此 Template,但与 StatefulSet 的其余部分具有唯一的身份。每个 Pod 的命名格式为 <statefulsetname>-<podindex>。例如,名为 "web" 且索引号为 "3" 的 StatefulSet 中的 Pod 将命名为 "web-3"。允许的唯一 template.spec.restartPolicy 值为 "Always"。

  • replicas (int32)

    replicas 是给定 Template 的期望副本数。这些是副本,因为它们是相同 Template 的实例化,但单个副本也具有一致的身份。如果未指定,则默认为 1。

  • updateStrategy (StatefulSetUpdateStrategy)

    updateStrategy 指示在对 Template 进行修改时,StatefulSet 控制器将用于更新 StatefulSet 中 Pod 的 StatefulSetUpdateStrategy。

    StatefulSetUpdateStrategy 指示 StatefulSet 控制器将用于执行更新的策略。它包括执行指示的策略所需的任何附加参数。

    • updateStrategy.type (string)

      Type 指示 StatefulSetUpdateStrategy 的类型。默认值为 RollingUpdate。

      可能的枚举值

      • "OnDelete" 触发旧行为。禁用版本跟踪和有序滚动重启。当手动删除 Pod 时,Pod 会从 StatefulSetSpec 重建。当使用此策略执行缩放操作时,StatefulSet 的 currentRevision 指示的规范版本。
      • "RollingUpdate" 指示更新将应用于 StatefulSet 中所有 Pod,并尊重 StatefulSet 排序约束。当使用此策略执行缩放操作时,将从 StatefulSet 的 updateRevision 指示的规范版本创建新的 Pod。
    • updateStrategy.rollingUpdate (RollingUpdateStatefulSetStrategy)

      RollingUpdate 用于在 Type 为 RollingUpdateStatefulSetStrategyType 时传递参数。

      RollingUpdateStatefulSetStrategy 用于传递 RollingUpdateStatefulSetStrategyType 的参数。

      • updateStrategy.rollingUpdate.maxUnavailable (IntOrString)

        更新期间可以不可用的最大 Pod 数量。值可以是绝对数字(例如:5)或所需 Pod 的百分比(例如:10%)。绝对数字通过向上取整从百分比计算得出。这不能为 0。默认值为 1。此字段处于 beta 级别,默认情况下已启用。该字段适用于范围 0 到 Replicas-1 中的所有 Pod。这意味着如果范围 0 到 Replicas-1 中有任何不可用的 Pod,它将计入 MaxUnavailable。对于 OrderedReady podManagementPolicy,此设置可能无效。该策略确保 Pod 一次一个地创建并变为就绪。

        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。

    可能的枚举值

    • "OrderedReady" 将在缩放期间严格按递增顺序创建 Pod,并在缩减时严格按递减顺序创建 Pod,仅在先前的 Pod 准备就绪或终止后才进行。一次最多只能更改一个 Pod。
    • "Parallel" 将在更改 StatefulSet 副本计数后立即创建和删除 Pod,并且不会等待 Pod 准备就绪或完成终止。
  • revisionHistoryLimit (int32)

    revisionHistoryLimit 是将维护在 StatefulSet 的修订历史记录中的最大修订次数。修订历史记录由所有未由当前应用的 StatefulSetSpec 版本表示的修订组成。默认值为 10。

  • volumeClaimTemplates ([]PersistentVolumeClaim)

    原子:将在合并期间被替换

    volumeClaimTemplates 是 Pod 允许引用的声明列表。StatefulSet 控制器负责以保持 Pod 身份的方式将网络身份映射到声明。此列表中的每个声明必须至少有一个匹配(按名称)的卷挂载在一个容器中。此列表中的声明优先于模板中的任何具有相同名称的卷。

  • minReadySeconds (int32)

    新创建的 Pod 应该准备就绪的最小秒数,而其任何容器都不会崩溃,才能被认为可用。默认值为 0(Pod 准备就绪后将被认为可用)

  • persistentVolumeClaimRetentionPolicy (StatefulSetPersistentVolumeClaimRetentionPolicy)

    persistentVolumeClaimRetentionPolicy 描述从 volumeClaimTemplates 创建的持久卷声明的生命周期。默认情况下,所有持久卷声明都会按需创建,并在手动删除之前保留。此策略允许更改生命周期,例如在删除 StatefulSet 时删除持久卷声明,或在缩减 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" 索引分配给第一个副本,并为每个额外的请求副本将索引递增一个。

    StatefulSetOrdinals 描述此 StatefulSet 中副本序号分配所使用的策略。

    • ordinals.start (int32)

      start 是代表第一个副本索引的数字。它可以用于从替代索引(例如:1 索引)对副本进行编号,而不是默认的 0 索引名称,或者用于协调副本从一个 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 是具有 Ready Condition 的为该 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 的哈希冲突计数。当需要为最新的 ControllerRevision 创建名称时,StatefulSet 控制器会将此字段用作冲突避免机制。

  • conditions ([]StatefulSetCondition)

    Patch 策略:在键 type 上合并

    映射:在合并期间将保留键类型上的唯一值

    表示 statefulset 当前状态的最新可用观察结果。

    StatefulSetCondition 描述在某个时间点的 statefulset 的状态。

    • conditions.status (string), required

      条件的状态,为 True、False 或 Unknown 之一。

    • conditions.type (string), required

      statefulset 条件的类型。

    • conditions.lastTransitionTime (Time)

      条件从一个状态过渡到另一个状态的最后时间。

      Time 是 time.Time 的包装器,支持正确地编组到 YAML 和 JSON。为时间包提供的许多工厂方法提供包装器。

    • 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 Server 在发生更改时更新。

StatefulSetList

StatefulSetList 是 StatefulSet 的集合。


操作


get 读取指定的 StatefulSet

HTTP 请求

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

Parameters

  • name (在路径中): string, 必需

    StatefulSet 的名称

  • namespace (在路径中): string, 必需

    命名空间

  • pretty (在查询中): string

    pretty

响应

200 (StatefulSet): OK

401: 未授权

get 读取指定 StatefulSet 的状态

HTTP 请求

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

Parameters

  • name (在路径中): string, 必需

    StatefulSet 的名称

  • namespace (在路径中): string, 必需

    命名空间

  • pretty (在查询中): string

    pretty

响应

200 (StatefulSet): OK

401: 未授权

list 列出或监视 StatefulSet 类型的对象

HTTP 请求

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

Parameters

响应

200 (StatefulSetList): OK

401: 未授权

list 列出或监视 StatefulSet 类型的对象

HTTP 请求

GET /apis/apps/v1/statefulsets

Parameters

响应

200 (StatefulSetList): OK

401: 未授权

create 创建一个 StatefulSet

HTTP 请求

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

Parameters

响应

200 (StatefulSet): OK

201 (StatefulSet): Created

202 (StatefulSet): Accepted

401: 未授权

update 替换指定的 StatefulSet

HTTP 请求

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

Parameters

响应

200 (StatefulSet): OK

201 (StatefulSet): Created

401: 未授权

update 替换指定 StatefulSet 的状态

HTTP 请求

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

Parameters

响应

200 (StatefulSet): OK

201 (StatefulSet): Created

401: 未授权

patch 部分更新指定的 StatefulSet

HTTP 请求

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

Parameters

  • name (在路径中): string, 必需

    StatefulSet 的名称

  • namespace (在路径中): string, 必需

    命名空间

  • body: Patch, 必需

  • dryRun (在查询中): string

    dryRun

  • fieldManager (在查询中): string

    fieldManager

  • fieldValidation (在查询中): string

    fieldValidation

  • force (in query): boolean

    force

  • pretty (在查询中): string

    pretty

响应

200 (StatefulSet): OK

201 (StatefulSet): Created

401: 未授权

patch 部分更新指定 StatefulSet 的状态

HTTP 请求

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

Parameters

  • name (在路径中): string, 必需

    StatefulSet 的名称

  • namespace (在路径中): string, 必需

    命名空间

  • body: Patch, 必需

  • dryRun (在查询中): string

    dryRun

  • fieldManager (在查询中): string

    fieldManager

  • fieldValidation (在查询中): string

    fieldValidation

  • force (in query): boolean

    force

  • pretty (在查询中): string

    pretty

响应

200 (StatefulSet): OK

201 (StatefulSet): Created

401: 未授权

delete 删除一个 StatefulSet

HTTP 请求

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

Parameters

响应

200 (Status): 确定

202 (Status): 已接受

401: 未授权

deletecollection 删除 StatefulSet 集合

HTTP 请求

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

Parameters

响应

200 (Status): 确定

401: 未授权

本页面是自动生成的。

如果您打算报告此页面的问题,请在您的问题描述中提及该页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。

最后修改时间为 2025 年 12 月 21 日下午 5:37 PST:更新 v1.35 资源文档 (85b57273c5)