第 17 章 StatefulSet [apps/v1]
- 描述
StatefulSet 代表一组具有一致身份的 pod。身份被定义为:- Network: 单个稳定的 DNS 和主机名。- 存储:根据需要有多个 VolumeClaim。
StatefulSet 保证给定网络身份始终映射到同一存储身份。
- 类型
-
对象
17.1. 规格
属性 | 类型 | 描述 |
---|---|---|
|
| APIVersion 定义对象的这个表示法的版本化的 schema。服务器应该将识别的模式转换为最新的内部值,并可拒绝未识别的值。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources |
|
| kind 是一个字符串值,代表此对象所代表的 REST 资源。服务器可以从客户端向其提交请求的端点推断。无法更新。采用驼峰拼写法 (CamelCase)。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
| 标准对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata | |
|
| StatefulSetSpec 是 StatefulSet 的规格。 |
|
| StatefulSetStatus 代表 StatefulSet 的当前状态。 |
17.1.1. .spec
- 描述
- StatefulSetSpec 是 StatefulSet 的规格。
- 类型
-
object
- 必填
-
selector
-
模板
-
serviceName
-
属性 | 类型 | 描述 |
---|---|---|
|
| 新创建的 pod 应该在不出现任何容器崩溃的情况下变为可用状态的最小秒数。默认为 0 (pod 一旦就绪就会被视为可用) |
|
| StatefulSetOrdinals 描述了此 StatefulSet 中用于副本普通分配的策略。 |
|
| StatefulSetPersistentVolumeClaimRetentionPolicy 描述了用于从 StatefulSet VolumeClaimTemplates 创建的 PVC 的策略。 |
|
|
PodManagementPolicy 控制如何在初始扩展、替换节点上的 pod 或缩减时创建 pod。默认策略为
可能枚举值:- |
|
| replicas 是给定模板的所需副本数。这些副本在意义上是同一模板实例化的,但单个副本也具有一致的身份。如果未指定,则默认为 1。 |
|
| revisionHistoryLimit 是 StatefulSet 的修订历史记录中要维护的最大修订版本数。修订历史记录由当前应用的 StatefulSetSpec 版本代表的所有修订版本组成。默认值为 10。 |
| selector 是 pod 的标签查询,它应当与副本数匹配。它必须与 pod 模板的标签匹配。更多信息: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors | |
|
| serviceName 是管理此 StatefulSet 的服务名称。此服务必须在 StatefulSet 之前存在,并负责集合的网络身份。Pod 获取遵循模式的 DNS/hostnames:特定于 pod 的string.serviceName.default.svc.cluster.local,其中 "pod-specific-string" 由 StatefulSet 控制器管理。 |
| template 是描述在检测到副本不足时将创建的 pod 的对象。StatefulSet 退出的每个 pod 都将履行此模板,但具有来自 StatefulSet 其余部分的唯一身份。每个 pod 都将以 <statefulsetname>-<podindex> 格式命名。例如,名为 "web" 的 StatefulSet 中的 pod,其索引号为 "3" 将命名为 "web-3"。唯一允许的 template.spec.restartPolicy 值是 "Always"。 | |
|
| StatefulSetUpdateStrategy 表示 StatefulSet 控制器用于执行更新的策略。它包括为指定策略执行更新所需的额外参数。 |
| VolumeClaimTemplates 是 pod 允许引用的声明列表。StatefulSet 控制器负责以维护 pod 身份的方式将网络身份映射到声明。此列表中的每个声明必须在模板中在一个容器中至少有一个匹配(按名称)volumeMount。此列表中的声明优先于模板中的任何卷,它们的名称相同。 |
17.1.2. .spec.ordinals
- 描述
- StatefulSetOrdinals 描述了此 StatefulSet 中用于副本普通分配的策略。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| 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 指定在 StatefulSet 被删除时从 StatefulSet VolumeClaimTemplates 创建的 PVC 发生的情况。 |
|
|
WhenScaled 指定在 StatefulSet 缩减时从 StatefulSet VolumeClaimTemplates 创建的 PVC 发生的情况。 |
17.1.4. .spec.updateStrategy
- 描述
- StatefulSetUpdateStrategy 表示 StatefulSet 控制器用于执行更新的策略。它包括为指定策略执行更新所需的额外参数。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| RollingUpdateStatefulSetStrategy 用于为 RollingUpdateStatefulSetStrategyType 进行通信参数。 |
|
| type 表示 StatefulSetUpdateStrategy 的类型。默认为 RollingUpdate。
可能枚举值: - |
17.1.5. .spec.updateStrategy.rollingUpdate
- 描述
- RollingUpdateStatefulSetStrategy 用于为 RollingUpdateStatefulSetStrategyType 进行通信参数。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
| 更新期间不可用的 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
-
属性 | 类型 | 描述 |
---|---|---|
|
| 此 statefulset 的目标可用 pod 的总数(至少为 minReadySeconds)。 |
|
| conflictCount 是 StatefulSet 的哈希冲突计数。当需要为最新的 ControllerRevision 创建名称时,StatefulSet 控制器使用此字段作为冲突机制。 |
|
| 代表 statefulset 当前状态的最新可用影响。 |
|
| StatefulSetCondition 描述了在某个时间点上的 statefulset 的状态。 |
|
| currentReplicas 是 StatefulSet 控制器从 currentRevision 表示的 StatefulSet 版本创建的 Pod 数量。 |
|
| currentRevision (如果不为空)指示用于在序列中生成 Pod 的 StatefulSet 版本 [0,currentReplicas)。 |
|
| observedGeneration 是此 StatefulSet 观察到的最新生成。它对应于 StatefulSet 的生成,该生成在 API 服务器时进行更新。 |
|
| readyReplicas 是为此 StatefulSet 创建的 pod 数量,带有 Ready Condition。 |
|
| replicas 是 StatefulSet 控制器创建的 Pod 数量。 |
|
| updateRevision (如果不为空),指示在序列 [replicas-updatedReplicas,replicas)中用于生成 Pod 的 StatefulSet 版本 |
|
| updatedReplicas 是 StatefulSet 控制器从 updateRevision 表示的 StatefulSet 版本创建的 Pod 数量。 |
17.1.7. .status.conditions
- 描述
- 代表 statefulset 当前状态的最新可用影响。
- 类型
-
array
17.1.8. .status.conditions[]
- 描述
- StatefulSetCondition 描述了在某个时间点上的 statefulset 的状态。
- 类型
-
object
- 必填
-
type
-
status
-
属性 | 类型 | 描述 |
---|---|---|
| 条件从一个状态转换到另一个状态最后一次的时间。 | |
|
| 人类可读的消息,指示有关转换的详细信息。 |
|
| 条件最后一次转换的原因。 |
|
| 条件的状态,True, False, Unknown 之一。 |
|
| statefulset 条件的类型。 |