StatefulSet

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

apiVersion: apps/v1

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

StatefulSet

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

  • 网络:单个稳定的 DNS 和主机名。
  • 存储:根据请求提供尽可能多的 VolumeClaims。

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


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 的集合。


操作


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

参数

响应

200 (StatefulSetList): OK

401: 未经授权

list 列出或观察 StatefulSet 类型的对象

HTTP 请求

GET /apis/apps/v1/statefulsets

参数

响应

200 (StatefulSetList): OK

401: 未经授权

create 创建一个 StatefulSet

HTTP 请求

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

参数

响应

200 (StatefulSet): OK

201 (StatefulSet): 已创建

202 (StatefulSet): 已接受

401: 未经授权

update 替换指定的 StatefulSet

HTTP 请求

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

参数

响应

200 (StatefulSet): OK

201 (StatefulSet): 已创建

401: 未经授权

update 替换指定 StatefulSet 的状态

HTTP 请求

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

参数

响应

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

    dryRun

  • fieldManager (在查询中): string

    fieldManager

  • fieldValidation (在查询中): string

    fieldValidation

  • 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

    dryRun

  • fieldManager (在查询中): string

    fieldManager

  • fieldValidation (在查询中): string

    fieldValidation

  • force (在查询中): boolean

    强制

  • pretty (在查询中): string

    漂亮

响应

200 (StatefulSet): OK

201 (StatefulSet): 已创建

401: 未经授权

delete 删除一个 StatefulSet

HTTP 请求

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

参数

响应

200 (Status): OK

202 (Status): 已接受

401: 未经授权

deletecollection 删除 StatefulSet 的集合

HTTP 请求

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

参数

响应

200 (Status): OK

401: 未经授权

此页面是自动生成的。

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

上次修改时间:2023 年 4 月 3 日上午 8:22 PST:API Ref 多页面 v1.27 (7b39e9a9ec)