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)
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),必需
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 中 Pod 的 StatefulSetUpdateStrategy。
StatefulSetUpdateStrategy 指示 StatefulSet 控制器将用于执行更新的策略。它包括执行指示策略更新所需的任何附加参数。
updateStrategy.type (string)
Type 指示 StatefulSetUpdateStrategy 的类型。默认为 RollingUpdate。
updateStrategy.rollingUpdate (RollingUpdateStatefulSetStrategy)
当 Type 为 RollingUpdateStatefulSetStrategyType 时,RollingUpdate 用于传递参数。
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 创建的持久卷声明的生命周期。默认情况下,所有持久卷声明都按需创建并保留,直到手动删除。此策略允许更改生命周期,例如在删除有状态集或缩容 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”索引,并为每个附加请求的副本将索引递增 1。
StatefulSetOrdinals 描述了用于此 StatefulSet 中副本序号分配的策略。
ordinals.start (int32)
start 是表示第一个副本索引的数字。它可用于从替代索引(例如:1-indexed)而非默认的 0-indexed 名称对副本进行编号,或用于协调副本从一个 StatefulSet 渐进式地移动到另一个。如果设置,副本索引将在范围:[.spec.ordinals.start, .spec.ordinals.start + .spec.replicas) 内。如果未设置,则默认为 0。副本索引将在范围:[0, .spec.replicas) 内。
StatefulSetStatus
StatefulSetStatus 代表 StatefulSet 的当前状态。
replicas (int32),必需
replicas 是由 StatefulSet 控制器创建的 Pod 数量。
readyReplicas (int32)
readyReplicas 是为此 StatefulSet 创建的具有 Ready Condition 的 Pod 数量。
currentReplicas (int32)
currentReplicas 是由 StatefulSet 控制器从 currentRevision 指示的 StatefulSet 版本创建的 Pod 数量。
updatedReplicas (int32)
updatedReplicas 是由 StatefulSet 控制器从 updateRevision 指示的 StatefulSet 版本创建的 Pod 数量。
availableReplicas (int32)
此有状态集目标(至少 minReadySeconds 已就绪)的可用 Pod 总数。
collisionCount (int32)
collisionCount 是 StatefulSet 的哈希冲突计数。StatefulSet 控制器在需要为最新 ControllerRevision 创建名称时,将此字段用作冲突避免机制。
conditions ([]StatefulSetCondition)
补丁策略:按键
type
合并映射:合并时将保留键类型上的唯一值
代表有状态集当前状态的最新可用观察结果。
StatefulSetCondition 描述了有状态集在某个时间点的状态。
conditions.status (string),必需
条件的 status,可以是 True、False、Unknown 之一。
conditions.type (string),必需
有状态集条件的类型。
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 服务器修改时更新。
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),必需
Items 是有状态集的列表。
操作
get
读取指定的 StatefulSet
HTTP 请求
GET /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}
参数
响应
200 (StatefulSet): OK
401: 未授权
get
读取指定的 StatefulSet 的状态
HTTP 请求
GET /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status
参数
响应
200 (StatefulSet): OK
401: 未授权
list
列出或监视 StatefulSet 类型的对象
HTTP 请求
GET /apis/apps/v1/namespaces/{namespace}/statefulsets
参数
namespace (在路径中): string,必填
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,必填
body: StatefulSet,必需
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,必填
StatefulSet 的名称
namespace (在路径中): string,必填
body: StatefulSet,必需
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,必填
StatefulSet 的名称
namespace (在路径中): string,必填
body: StatefulSet,必需
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,必填
StatefulSet 的名称
namespace (在路径中): string,必填
body: Patch,必需
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,必填
StatefulSet 的名称
namespace (在路径中): string,必填
body: Patch,必需
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,必填
StatefulSet 的名称
namespace (在路径中): string,必填
body: DeleteOptions
dryRun (在查询中): string
gracePeriodSeconds (在查询中): integer
ignoreStoreReadErrorWithClusterBreakingPotential (在查询中): boolean
pretty (在查询中): string
propagationPolicy (在查询中): string
响应
200 (Status): OK
202 (Status): 已接受
401: 未授权
deletecollection
删除 StatefulSet 集合
HTTP 请求
DELETE /apis/apps/v1/namespaces/{namespace}/statefulsets
参数
namespace (在路径中): string,必填
body: DeleteOptions
continue (在查询中): string
dryRun (在查询中): string
fieldSelector (在查询中): string
gracePeriodSeconds (在查询中): integer
ignoreStoreReadErrorWithClusterBreakingPotential (在查询中): boolean
labelSelector (在查询中): string
limit (在查询中): integer
pretty (在查询中): string
propagationPolicy (在查询中): string
resourceVersion (在查询中): string
resourceVersionMatch (在查询中): string
sendInitialEvents (在查询中): boolean
timeoutSeconds (在查询中): integer
响应
200 (Status): OK
401: 未授权
本页面是自动生成的。
如果你打算报告此页面存在的问题,请在问题描述中提及此页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。