K8S之Deployment控制器管理应用(十一)

K8S之Deployment控制器管理应用(十一)_第1张图片

  • Deployment介绍

     Deployment是最常用的K8s工作负载控制器(Workload Controllers), 是K8s的一个抽象概念,用于更高级层次对象,部署和管理Pod。

     Deployment的主要功能:

• 管理Pod,即应用程序

• 具有上线部署、副本设定、滚动升级、回滚等功能 应用场景:网站、API、微服务

K8S之Deployment控制器管理应用(十一)_第2张图片

  • 应用生命周期管理流程

  • 应用部署

第一步:部署镜像

• kubectl apply -f xxx.yaml

• kubectl create deployment web --image=nginx:1.16 --replicas=3

K8S之Deployment控制器管理应用(十一)_第3张图片

  • 应用升级

第二步:应用升级(更新镜像2种方式,自动触发滚动升级)

• kubectl apply -f xxx.yaml

• kubectl set image deployment/web nginx=nginx:1.17

K8S之Deployment控制器管理应用(十一)_第4张图片

滚动升级:K8s对Pod升级的默认策略,通过使用新版本 Pod逐步更新旧版本Pod,实现零停机发布,用户无感知。

  • 应用水平扩容和缩容

第三步:水平扩缩容(启动多实例,提高并发)

• 修改yaml里replicas值,再apply

• kubectl scale deployment web --replicas=10

注:replicas参数控制Pod副本数量

K8S之Deployment控制器管理应用(十一)_第5张图片

  • 应用发布失败回滚

第四步:应用发布失败回滚(项目升级失败恢复到正常版本)

kubectl rollout history deployment/web # 查看历史发布版本

kubectl rollout undo deployment/web # 回滚上一个版本

kubectl rollout undo deployment/web --to-revision=2 # 回滚历史指定版本

注:回滚是重新部署某一次部署时的状态,即当时版本所有配置

  • 应用下线

最后,项目下线,将资源删除:

kubectl delete deploy/web

kubectl delete svc/web

你可能感兴趣的:(k8s技术,java,docker,kubernetes)