第 17 章 StatefulSet [apps/v1]


描述

StatefulSet 代表一组具有一致身份的 pod。身份被定义为:- Network: 单个稳定的 DNS 和主机名。- 存储:根据需要有多个 VolumeClaim。

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

类型
对象

17.1. 规格

属性类型描述

apiVersion

字符串

APIVersion 定义对象的这个表示法的版本化的 schema。服务器应该将识别的模式转换为最新的内部值,并可拒绝未识别的值。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

kind

字符串

kind 是一个字符串值,代表此对象所代表的 REST 资源。服务器可以从客户端向其提交请求的端点推断。无法更新。采用驼峰拼写法 (CamelCase)。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

metadata

ObjectMeta

标准对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

spec

object

StatefulSetSpec 是 StatefulSet 的规格。

status

object

StatefulSetStatus 代表 StatefulSet 的当前状态。

17.1.1. .spec

描述
StatefulSetSpec 是 StatefulSet 的规格。
类型
object
必填
  • selector
  • 模板
  • serviceName
属性类型描述

minReadySeconds

整数

新创建的 pod 应该在不出现任何容器崩溃的情况下变为可用状态的最小秒数。默认为 0 (pod 一旦就绪就会被视为可用)

ordinals

object

StatefulSetOrdinals 描述了此 StatefulSet 中用于副本普通分配的策略。

persistentVolumeClaimRetentionPolicy

object

StatefulSetPersistentVolumeClaimRetentionPolicy 描述了用于从 StatefulSet VolumeClaimTemplates 创建的 PVC 的策略。

podManagementPolicy

string

PodManagementPolicy 控制如何在初始扩展、替换节点上的 pod 或缩减时创建 pod。默认策略为 OrderedReady,其中创建 pod 以增加顺序(pod-0,然后是 pod-1 等),控制器会在继续前等待每个 pod 就绪。在缩减时,pod 会按照相反的顺序移除。备用策略是并行的,在没有等待的情况下,并行创建 pod 以匹配所需的扩展,在缩减时将一次性删除所有 pod。

可能枚举值:- "OrderedReady" 将以严格增加的扩展顺序创建 pod,并严格减少缩减顺序,只有在以前的 pod 就绪或终止时才进行。在更改有状态集副本数时,大多数 pod 都会随时更改。- "Parallel" 会在更改有状态集副本数时创建和删除 pod,也不会等待 pod 就绪或完成终止。

replicas

整数

replicas 是给定模板的所需副本数。这些副本在意义上是同一模板实例化的,但单个副本也具有一致的身份。如果未指定,则默认为 1。

revisionHistoryLimit

整数

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

selector

LabelSelector

selector 是 pod 的标签查询,它应当与副本数匹配。它必须与 pod 模板的标签匹配。更多信息: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors

serviceName

string

serviceName 是管理此 StatefulSet 的服务名称。此服务必须在 StatefulSet 之前存在,并负责集合的网络身份。Pod 获取遵循模式的 DNS/hostnames:特定于 pod 的string.serviceName.default.svc.cluster.local,其中 "pod-specific-string" 由 StatefulSet 控制器管理。

模板

PodTemplateSpec

template 是描述在检测到副本不足时将创建的 pod 的对象。StatefulSet 退出的每个 pod 都将履行此模板,但具有来自 StatefulSet 其余部分的唯一身份。每个 pod 都将以 <statefulsetname>-<podindex> 格式命名。例如,名为 "web" 的 StatefulSet 中的 pod,其索引号为 "3" 将命名为 "web-3"。唯一允许的 template.spec.restartPolicy 值是 "Always"。

updateStrategy

object

StatefulSetUpdateStrategy 表示 StatefulSet 控制器用于执行更新的策略。它包括为指定策略执行更新所需的额外参数。

volumeClaimTemplates

数组(PersistentVolumeClaim)

VolumeClaimTemplates 是 pod 允许引用的声明列表。StatefulSet 控制器负责以维护 pod 身份的方式将网络身份映射到声明。此列表中的每个声明必须在模板中在一个容器中至少有一个匹配(按名称)volumeMount。此列表中的声明优先于模板中的任何卷,它们的名称相同。

17.1.2. .spec.ordinals

描述
StatefulSetOrdinals 描述了此 StatefulSet 中用于副本普通分配的策略。
类型
object
属性类型描述

start

整数

start 是代表第一个副本的索引的数字。它可用于将副本从备用索引(例如:1-indexed)对默认的 0-indexed 名称进行编号,或者编配从一个 StatefulSet 到另一个 StatefulSet 的副本移动。如果设置,副本索引将位于范围: [.spec.ordinals.start, .spec.ordinals.start + .spec.replicas)。如果未设置,则默认为 0。副本索引将位于范围: [0, .spec.replicas)。

17.1.3. .spec.persistentVolumeClaimRetentionPolicy

描述
StatefulSetPersistentVolumeClaimRetentionPolicy 描述了用于从 StatefulSet VolumeClaimTemplates 创建的 PVC 的策略。
类型
object
属性类型描述

whenDeleted

string

WhenDeleted 指定在 StatefulSet 被删除时从 StatefulSet VolumeClaimTemplates 创建的 PVC 发生的情况。Retain 的默认策略会导致 PVC 不受 StatefulSet 删除的影响。Delete 策略会导致删除这些 PVC。

whenScaled

string

WhenScaled 指定在 StatefulSet 缩减时从 StatefulSet VolumeClaimTemplates 创建的 PVC 发生的情况。Retain 的默认策略会导致 PVC 不受缩减的影响。Delete 策略会导致删除副本数以上 pod 的关联 PVC。

17.1.4. .spec.updateStrategy

描述
StatefulSetUpdateStrategy 表示 StatefulSet 控制器用于执行更新的策略。它包括为指定策略执行更新所需的额外参数。
类型
object
属性类型描述

rollingUpdate

object

RollingUpdateStatefulSetStrategy 用于为 RollingUpdateStatefulSetStrategyType 进行通信参数。

type

string

type 表示 StatefulSetUpdateStrategy 的类型。默认为 RollingUpdate。

可能枚举值: - "OnDelete" 会触发传统行为。版本跟踪和排序滚动重启被禁用。当 Pod 被手动删除时,会从 StatefulSetSpec 重新创建 Pod。当使用此策略执行扩展操作时,由 StatefulSet 的 currentRevision 指示的具体版本。- "RollingUpdate" 表示更新将应用到 StatefulSet 排序约束中的所有 Pod。当使用此策略执行扩展操作时,将从 StatefulSet 的 updateRevision 所指示的规格版本创建新的 Pod。

17.1.5. .spec.updateStrategy.rollingUpdate

描述
RollingUpdateStatefulSetStrategy 用于为 RollingUpdateStatefulSetStrategyType 进行通信参数。
类型
object
属性类型描述

maxUnavailable

IntOrString

更新期间不可用的 pod 的最大数量。值可以是绝对数字(例如 5)或所需 pod 的百分比(例如 10%)。绝对数量从百分比计算。这不能是 0。默认为 1。此字段是 alpha-level,且仅被启用 MaxUnavailableStatefulSet 功能的服务器实现。该字段适用于 0 到 Replicas-1 范围中的所有 pod。这意味着,如果 0 到 Replicas-1 范围中有任何不可用的 pod,它将被计数为 MaxUnavailable。

分区

整数

partition 表示在什么位置,StatefulSet 应该对更新进行分区。在滚动更新过程中,所有来自普通 Replicas-1 的 pod 都被更新为分区。来自普通分区 1 到 0 的所有 pod 都保持不变。这有助于执行基于 Canary 的部署。默认值为 0。

17.1.6. .status

描述
StatefulSetStatus 代表 StatefulSet 的当前状态。
类型
object
必填
  • replicas
属性类型描述

availableReplicas

整数

此 statefulset 的目标可用 pod 的总数(至少为 minReadySeconds)。

collisionCount

整数

conflictCount 是 StatefulSet 的哈希冲突计数。当需要为最新的 ControllerRevision 创建名称时,StatefulSet 控制器使用此字段作为冲突机制。

conditions

数组

代表 statefulset 当前状态的最新可用影响。

conditions[]

object

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

currentReplicas

整数

currentReplicas 是 StatefulSet 控制器从 currentRevision 表示的 StatefulSet 版本创建的 Pod 数量。

currentRevision

string

currentRevision (如果不为空)指示用于在序列中生成 Pod 的 StatefulSet 版本 [0,currentReplicas)。

observedGeneration

整数

observedGeneration 是此 StatefulSet 观察到的最新生成。它对应于 StatefulSet 的生成,该生成在 API 服务器时进行更新。

readyReplicas

整数

readyReplicas 是为此 StatefulSet 创建的 pod 数量,带有 Ready Condition。

replicas

整数

replicas 是 StatefulSet 控制器创建的 Pod 数量。

updateRevision

string

updateRevision (如果不为空),指示在序列 [replicas-updatedReplicas,replicas)中用于生成 Pod 的 StatefulSet 版本

updatedReplicas

整数

updatedReplicas 是 StatefulSet 控制器从 updateRevision 表示的 StatefulSet 版本创建的 Pod 数量。

17.1.7. .status.conditions

描述
代表 statefulset 当前状态的最新可用影响。
类型
array

17.1.8. .status.conditions[]

描述
StatefulSetCondition 描述了在某个时间点上的 statefulset 的状态。
类型
object
必填
  • type
  • status
属性类型描述

lastTransitionTime

时间

条件从一个状态转换到另一个状态最后一次的时间。

message

字符串

人类可读的消息,指示有关转换的详细信息。

reason

字符串

条件最后一次转换的原因。

status

字符串

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

type

string

statefulset 条件的类型。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.