什么是 Kubernetes 部署?

复制 URL

Kubernetes 部署是 Kubernetes 中的一个资源对象,可以对应用进行声明性更新。部署(Deployment)允许您描述应用的生命周期,比如应用使用的镜像、容器集数量,以及容器集更新方式。 

通过 Kubernetes 对象,Kubernetes 系统可了解您期望的集群工作负载。创建对象后,集群将持续工作以确保该对象存在,从而保持 Kubernetes 集群的理想状态。 

手动更新容器化应用的过程耗时而繁琐。将服务升级到下一版本需要启动容器集的新版本,停止容器集的旧版本,等待并验证新版本是否成功启动,在出现故障时有时还要回滚到上一版本。

手动执行这些步骤可能导致人为错误,而妥善地编写脚本也会需要大量资源,这两种情况都可能会使发布过程变为瓶颈。 

而 Kubernetes 部署可让这一过程自动化并且可重复。部署完全由 Kubernetes 后端管理,整个更新过程在服务器端执行,无需客户端干预。

部署可确保始终有所需数量的容器集运行并可用。更新过程也被完整地记录下来,并使用暂停、继续和回滚到以前版本的选项进行版本控制。

Kubernetes 部署对象允许您:

  • 部署副本集或容器集
  • 更新容器集和副本集
  • 回滚到以前的部署版本
  • 扩展部署
  • 暂停或继续部署

使用 Kubernetes 部署管理应用包括应用的更新方式。部署的一大主要优势是能够预测性地启动和停止容器集。

滚动更新策略

滚动更新策略可以有控制地、分阶段更换应用的容器集,确保始终有最小容器集数量可用。

部署默认确保任何时候最多只有 25% 的容器集不可用,也不会置备超过理想状态下指定容器集数量的 25%。 

在没有足够新容器集可用之前,部署不会删除旧容器集,从而保持可用性阈值,在删除足够多的旧容器集之前,也不会创建新的容器集。

部署对象允许您通过 maxSurge 和 maxUnavailable 字段控制可用容器集和多余容器集的范围。

采用滚动更新策略时,在更新过程中没有停机时间,但是应用架构必须确保能够容许容器集销毁和创建操作。

在更新过程中,2 种容器版本同时运行 ,这可能会给服务使用者制造问题。

重建策略

重建策略会在创建新策略之前删除所有现有容器集。Kubernetes 先终止当前版本中的所有容器,然后在旧容器删除时同时启动所有新容器。 

使用重新创建部署策略会有一些停机时间,因为所有使用旧版本的容器都会停止,而且没有新的容器准备好处理传入的请求。 

但是,不会有 2 种版本容器同时运行,这对服务使用者来说更简单。

红帽资源

部署是通过编写清单创建的。接着,使用 kubectl apply 或声明性部署模式,将该清单应用到 Kubernetes 集群。Kubernetes 的配置文件可使用 YAML 或 JSON 编写。

创建部署时,将描述所需状态,然后 Kubernetes 将使用滚动或重新创建部署策略进行实施。 

通过使用声明性部署模式,您可以使用 Kubernetes 部署自动执行一组容器集的升级和回滚过程。Kubernetes 模式是基于容器的应用和服务的可复用设计模式。  

你可以通过更改容器集模板规格来更新部署。对规格字段进行更改时,将自动触发更新部署。

部署生命周期包括进行中、完成和失败三种状态。部署在执行更新任务时(比如更新或扩展容器集)处于进行中状态。 

完成状态表示所有任务均已成功完成,系统处于理想状态。失败状态是由于一些错误阻止了部署完成任务。 

您可以使用 kubectl 部署状态命令检查或监控部署的状态。 

需要 Kubernetes 入门帮助?学习如何构建和管理容器,从而在 Kubernetes 和红帽® OpenShift® 集群上进行部署。本培训课程将帮助您培养容器和 Kubernetes 的实操经验,掌握有关容器管理的核心知识。 

进一步了解该培训课程

红帽 OpenShift 是一个企业就绪型 Kubernetes 平台。它为开发人员提供了一种自助服务环境,可以在任何基础架构上打造并实现全堆栈自动化运维。

红帽 OpenShift 汇集了所有相关的先进技术,旨在将 Kubernetes 打造成为可供企业使用的强大平台,这些技术包括:注册表、联网、遥测、安全性、自动化和服务。

 

借助红帽 OpenShift 的可扩展性以及控制和编排功能,开发人员可以构建新的容器化应用、对其进行托管并在云端加以部署,从而轻松快速地将各种奇思妙想转变为新业务。

了解有关红帽 OpenShift 的更多信息
中心

红帽官方博客

获取有关我们的客户、合作伙伴和社区生态系统的最新信息。

所有红帽产品试用

我们的免费试用可让您亲身体验红帽的产品功能,为获得认证做好准备,或评估某个产品是否适合您的企业。

扩展阅读

什么是 Kubernetes Java 客户端?

Kubernetes Java 客户端是一个支持使用 Java 编程语言与 Kubernetes 进行接口的客户端库。

AWS 上的 K8s:自助式应用平台与托管式应用平台比较

一文了解 AWS 上 K8s 的功能与优势。使用 AWS 上的 Kubernetes,您可以在开发时灵活地自行配置和管理部署,大规模运行应用,添加新功能, 无缝迁移应用, 随时随地运行。

什么是托管控制平面?

使较小的节点能够运行控制平面,从而降低集群的成本,助力实现真正的混合云,

容器 相关资源

相关文章