第 8 章 Deployment [apps/v1]


描述
Deployment 为 Pod 和 ReplicaSet 启用声明性更新。
类型
对象

8.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

对象

DeploymentSpec 是 Deployment 所需的行为的规格。

status

object

DeploymentStatus 是部署最近观察到的状态。

8.1.1. .spec

描述
DeploymentSpec 是 Deployment 所需的行为的规格。
类型
object
必填
  • selector
  • 模板
属性类型描述

minReadySeconds

整数

新创建的 pod 应该在没有其任何容器崩溃的情况下就绪的最少秒数,以便它被视为可用。默认为 0 (pod 一旦就绪就会被视为可用)

paused

布尔值

表示部署已暂停。

progressDeadlineSeconds

整数

部署在被视为失败前进行进度的最长时间(以秒为单位)。部署控制器将继续处理失败的部署,以及具有 ProgressDeadlineExceed 原因的条件将处于部署状态。请注意,在部署暂停期间不会估算进度。默认值为 600s。

replicas

整数

所需的 pod 数量。这是一个指针,用于区分显式零和未指定的。默认为 1。

revisionHistoryLimit

整数

要保留的旧 ReplicaSet 数量,以允许回滚。这是一个指针,用于区分显式零和未指定的。默认值为 10。

selector

LabelSelector

pod 的标签选择器。其 pod 被选择的现有 ReplicaSet 将会受到此部署的影响。它必须与 pod 模板的标签匹配。

策略

object

DeploymentStrategy 描述了如何将现有 pod 替换为新的 pod。

模板

PodTemplateSpec

Template 描述了要创建的 pod。唯一允许的 template.spec.restartPolicy 值是 "Always"。

8.1.2. .spec.strategy

描述
DeploymentStrategy 描述了如何将现有 pod 替换为新的 pod。
类型
object
属性类型描述

rollingUpdate

object

spec 控制滚动更新所需的行为。

type

字符串

部署类型。可以是 "Recreate" 或 "RollingUpdate"。默认为 RollingUpdate。

可能枚举值:- "Recreate" Kill all existing pods before create new pods. - "RollingUpdate" 使用滚动更新替换旧 ReplicaSets,这会逐渐缩减旧 ReplicaSet 并扩展新的 pod。

8.1.3. .spec.strategy.rollingUpdate

描述
spec 控制滚动更新所需的行为。
类型
object
属性类型描述

maxSurge

IntOrString

可以在所需 pod 数量之上调度的最大 pod 数量。值可以是绝对数字(例如 5)或所需 pod 的百分比(例如 10%)。如果 MaxUnavailable 为 0,则不能是 0。绝对数量从百分比计算。默认值为 25%。示例:当将其设置为 30% 时,在滚动更新启动时可以立即扩展新的 ReplicaSet,以便旧 pod 的总数不会超过 130%。旧 pod 终止后,可以进一步扩展新的 ReplicaSet,确保更新期间任何时间运行的 pod 总数最多为 130%。

maxUnavailable

IntOrString

更新期间不可用的 pod 的最大数量。值可以是绝对数字(例如 5)或所需 pod 的百分比(例如 10%)。绝对数量从百分比计算(通过向下舍入)。如果 MaxSurge 为 0,则这不能是 0。默认值为 25%。示例:当将其设置为 30% 时,在滚动更新启动时,可以立即将旧 ReplicaSet 缩减到 70% 的 pod。新 pod 就绪后,可以进一步扩展旧的 ReplicaSet,然后扩展新的 ReplicaSet,确保更新期间可用的 pod 总数至少 70%。

8.1.4. .status

描述
DeploymentStatus 是部署最近观察到的状态。
类型
object
属性类型描述

availableReplicas

整数

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

collisionCount

整数

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

conditions

数组

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

conditions[]

object

DeploymentCondition 描述了部署在特定时间点上的状态。

observedGeneration

整数

部署控制器观察到的生成。

readyReplicas

整数

readyReplicas 是此 Deployment 目标的 pod 数量,带有 Ready Condition。

replicas

整数

此部署目标的非确定 pod 的总数(标签与选择器匹配)。

unavailableReplicas

整数

此部署目标不可用 pod 的总数。这是部署需要有 100% 可用容量的 pod 总数。它们可能是正在运行但尚未可用或尚未创建的 pod。

updatedReplicas

整数

此部署目标为具有所需模板 spec 的非确定 pod 的总数。

8.1.5. .status.conditions

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

8.1.6. .status.conditions[]

描述
DeploymentCondition 描述了部署在特定时间点上的状态。
类型
object
必填
  • type
  • status
属性类型描述

lastTransitionTime

时间

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

lastUpdateTime

时间

最后一次更新此条件的时间。

message

字符串

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

reason

字符串

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

status

字符串

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

type

string

部署条件的类型。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.