StatefulSet
apiVersion: apps/v1
import "k8s.io/api/apps/v1"
StatefulSet
StatefulSet 代表一组具有一致身份的 Pod。身份定义为
- 网络:单个稳定的 DNS 和主机名。
- 存储:如请求的许多 VolumeClaim。
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), 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 的集合。
apiVersion: apps/v1
kind: StatefulSetList
metadata (ListMeta)
标准列表的元数据。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
items ([]StatefulSet), required
Items 是 stateful set 的列表。
操作
get 读取指定的 StatefulSet
HTTP 请求
GET /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}
Parameters
响应
200 (StatefulSet): OK
401: 未授权
get 读取指定 StatefulSet 的状态
HTTP 请求
GET /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status
Parameters
响应
200 (StatefulSet): OK
401: 未授权
list 列出或监视 StatefulSet 类型的对象
HTTP 请求
GET /apis/apps/v1/namespaces/{namespace}/statefulsets
Parameters
namespace (在路径中): string, 必需
allowWatchBookmarks (in query): boolean
continue (in query): string
fieldSelector (in query): string
labelSelector (in query): string
limit (in query): integer
pretty (在查询中): string
resourceVersion (in query): string
resourceVersionMatch (in query): string
sendInitialEvents (in query): boolean
timeoutSeconds (in query): integer
watch (in query): boolean
响应
200 (StatefulSetList): OK
401: 未授权
list 列出或监视 StatefulSet 类型的对象
HTTP 请求
GET /apis/apps/v1/statefulsets
Parameters
allowWatchBookmarks (in query): boolean
continue (in query): string
fieldSelector (in query): string
labelSelector (in query): string
limit (in query): integer
pretty (在查询中): string
resourceVersion (in query): string
resourceVersionMatch (in query): string
sendInitialEvents (in query): boolean
timeoutSeconds (in query): integer
watch (in query): boolean
响应
200 (StatefulSetList): OK
401: 未授权
create 创建一个 StatefulSet
HTTP 请求
POST /apis/apps/v1/namespaces/{namespace}/statefulsets
Parameters
namespace (在路径中): string, 必需
body: StatefulSet, required
dryRun (在查询中): string
fieldManager (在查询中): string
fieldValidation (在查询中): string
pretty (在查询中): string
响应
200 (StatefulSet): OK
201 (StatefulSet): Created
202 (StatefulSet): Accepted
401: 未授权
update 替换指定的 StatefulSet
HTTP 请求
PUT /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}
Parameters
name (在路径中): string, 必需
StatefulSet 的名称
namespace (在路径中): string, 必需
body: StatefulSet, required
dryRun (在查询中): string
fieldManager (在查询中): string
fieldValidation (在查询中): string
pretty (在查询中): string
响应
200 (StatefulSet): OK
201 (StatefulSet): Created
401: 未授权
update 替换指定 StatefulSet 的状态
HTTP 请求
PUT /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status
Parameters
name (在路径中): string, 必需
StatefulSet 的名称
namespace (在路径中): string, 必需
body: StatefulSet, required
dryRun (在查询中): string
fieldManager (在查询中): string
fieldValidation (在查询中): string
pretty (在查询中): string
响应
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
fieldManager (在查询中): string
fieldValidation (在查询中): string
force (in query): boolean
pretty (在查询中): string
响应
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
fieldManager (在查询中): string
fieldValidation (在查询中): string
force (in query): boolean
pretty (在查询中): string
响应
200 (StatefulSet): OK
201 (StatefulSet): Created
401: 未授权
delete 删除一个 StatefulSet
HTTP 请求
DELETE /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}
Parameters
name (在路径中): string, 必需
StatefulSet 的名称
namespace (在路径中): string, 必需
body: DeleteOptions
dryRun (在查询中): string
gracePeriodSeconds (in query): integer
ignoreStoreReadErrorWithClusterBreakingPotential (in query): boolean
pretty (在查询中): string
propagationPolicy (in query): string
响应
200 (Status): 确定
202 (Status): 已接受
401: 未授权
deletecollection 删除 StatefulSet 集合
HTTP 请求
DELETE /apis/apps/v1/namespaces/{namespace}/statefulsets
Parameters
namespace (在路径中): string, 必需
body: DeleteOptions
continue (in query): string
dryRun (在查询中): string
fieldSelector (in query): string
gracePeriodSeconds (in query): integer
ignoreStoreReadErrorWithClusterBreakingPotential (in query): boolean
labelSelector (in query): string
limit (in query): integer
pretty (在查询中): string
propagationPolicy (in query): string
resourceVersion (in query): string
resourceVersionMatch (in query): string
sendInitialEvents (in query): boolean
timeoutSeconds (in query): integer
响应
200 (Status): 确定
401: 未授权
本页面是自动生成的。
如果您打算报告此页面的问题,请在您的问题描述中提及该页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。