概述
Kubernetes 部署是 Kubernetes 中的一个资源对象,可以对应用进行声明性更新。部署(Deployment)允许您描述应用的生命周期,比如应用使用的镜像、容器集数量,以及容器集更新方式。
通过 Kubernetes 对象,Kubernetes 系统可了解您期望的集群工作负载。创建对象后,集群将持续工作以确保该对象存在,从而保持 Kubernetes 集群的理想状态。
手动更新容器化应用的过程耗时而繁琐。将服务升级到下一版本需要启动容器集的新版本,停止容器集的旧版本,等待并验证新版本是否成功启动,在出现故障时有时还要回滚到上一版本。
手动执行这些步骤可能导致人为错误,而妥善地编写脚本也会需要大量资源,这两种情况都可能会使发布过程变为瓶颈。
而 Kubernetes 部署可让这一过程自动化并且可重复。部署完全由 Kubernetes 后端管理,整个更新过程在服务器端执行,无需客户端干预。
部署可确保始终有所需数量的容器集运行并可用。更新过程也被完整地记录下来,并使用暂停、继续和回滚到以前版本的选项进行版本控制。
Kubernetes 部署对象允许您:
- 部署副本集或容器集
- 更新容器集和副本集
- 回滚到以前的部署版本
- 扩展部署
- 暂停或继续部署
使用 Kubernetes 部署的应用管理策略
使用 Kubernetes 部署管理应用包括应用的更新方式。部署的一大主要优势是能够预测性地启动和停止容器集。
滚动更新策略
滚动更新策略可以有控制地、分阶段更换应用的容器集,确保始终有最小容器集数量可用。
部署默认确保任何时候最多只有 25% 的容器集不可用,也不会置备超过理想状态下指定容器集数量的 25%。
在没有足够新容器集可用之前,部署不会删除旧容器集,从而保持可用性阈值,在删除足够多的旧容器集之前,也不会创建新的容器集。
部署对象允许您通过 maxSurge 和 maxUnavailable 字段控制可用容器集和多余容器集的范围。
采用滚动更新策略时,在更新过程中没有停机时间,但是应用架构必须确保能够容许容器集销毁和创建操作。
在更新过程中,2 种容器版本同时运行 ,这可能会给服务使用者制造问题。
重建策略
重建策略会在创建新策略之前删除所有现有容器集。Kubernetes 先终止当前版本中的所有容器,然后在旧容器删除时同时启动所有新容器。
使用重新创建部署策略会有一些停机时间,因为所有使用旧版本的容器都会停止,而且没有新的容器准备好处理传入的请求。
但是,不会有 2 种版本容器同时运行,这对服务使用者来说更简单。
红帽 OpenShift Kubernetes
声明性 Kubernetes 部署模式
部署是通过编写清单创建的。接着,使用 kubectl apply 或声明性部署模式,将该清单应用到 Kubernetes 集群。Kubernetes 的配置文件可使用 YAML 或 JSON 编写。
创建部署时,将描述所需状态,然后 Kubernetes 将使用滚动或重新创建部署策略进行实施。
通过使用声明性部署模式,您可以使用 Kubernetes 部署自动执行一组容器集的升级和回滚过程。Kubernetes 模式是基于容器的应用和服务的可复用设计模式。
你可以通过更改容器集模板规格来更新部署。对规格字段进行更改时,将自动触发更新部署。
部署生命周期包括进行中、完成和失败三种状态。部署在执行更新任务时(比如更新或扩展容器集)处于进行中状态。
完成状态表示所有任务均已成功完成,系统处于理想状态。失败状态是由于一些错误阻止了部署完成任务。
您可以使用 kubectl 部署状态命令检查或监控部署的状态。
需要 Kubernetes 入门帮助?学习如何构建和管理容器,从而在 Kubernetes 和红帽® OpenShift® 集群上进行部署。本培训课程将帮助您培养容器和 Kubernetes 的实操经验,掌握有关容器管理的核心知识。
企业级 Kubernetes
红帽 OpenShift 是一个企业就绪型 Kubernetes 平台。它为开发人员提供了一种自助服务环境,可以在任何基础架构上打造并实现全堆栈自动化运维。
红帽 OpenShift 汇集了所有相关的先进技术,旨在将 Kubernetes 打造成为可供企业使用的强大平台,这些技术包括:注册表、联网、遥测、安全性、自动化和服务。
借助红帽 OpenShift 的可扩展性以及控制和编排功能,开发人员可以构建新的容器化应用、对其进行托管并在云端加以部署,从而轻松快速地将各种奇思妙想转变为新业务。