- Deployment介绍
Deployment是最常用的K8s工作负载控制器(Workload Controllers), 是K8s的一个抽象概念,用于更高级层次对象,部署和管理Pod。
Deployment的主要功能:
• 管理Pod,即应用程序
• 具有上线部署、副本设定、滚动升级、回滚等功能 应用场景:网站、API、微服务
- 应用生命周期管理流程
- 应用部署
第一步:部署镜像
• kubectl apply -f xxx.yaml
• kubectl create deployment web --image=nginx:1.16 --replicas=3
- 应用升级
第二步:应用升级(更新镜像2种方式,自动触发滚动升级)
• kubectl apply -f xxx.yaml
• kubectl set image deployment/web nginx=nginx:1.17
滚动升级:K8s对Pod升级的默认策略,通过使用新版本 Pod逐步更新旧版本Pod,实现零停机发布,用户无感知。
- 应用水平扩容和缩容
第三步:水平扩缩容(启动多实例,提高并发)
• 修改yaml里replicas值,再apply
• kubectl scale deployment web --replicas=10
注:replicas参数控制Pod副本数量
- 应用发布失败回滚
第四步:应用发布失败回滚(项目升级失败恢复到正常版本)
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