3.8 Deployment控制器详解:实现应用滚动更新和回滚策略
引言
Deployment是Kubernetes中最常用的控制器,用于管理无状态应用。通过Deployment可以实现应用的滚动更新、回滚、扩缩容等功能。本文将详细介绍Deployment的使用方法和最佳实践。
一、Deployment概述
1.1 Deployment的作用
- 管理Pod副本
- 滚动更新
- 回滚
- 扩缩容
1.2 Deployment架构
Deployment │ ▼ ReplicaSet │ ▼ Pods二、创建Deployment
2.1 基本Deployment
apiVersion:apps/v1kind:Deploymentmetadata:name:nginx-deploymentlabels:app:nginxspec:replicas:3selector:matchLabels:app:nginxtemplate:metadata:labels:app:nginxspec:containers:-name:nginximage:nginx:1.21ports:-containerPort:802.2 创建和查看
# 创建Deploymentkubectl create -f deployment.yaml# 查看Deploymentkubectl get deployments# 查看详细信息kubectl describe deployment nginx-deployment# 查看ReplicaSetkubectl get rs# 查看Podkubectl get pods -lapp=nginx三、滚动更新
3.1 更新策略
apiVersion:apps/v1kind:Deploymentspec:strategy:type:RollingUpdaterollingUpdate:maxSurge:1maxUnavailable:03.2 执行更新
# 更新镜像kubectlsetimage deployment/nginx-deploymentnginx=nginx:1.22# 或编辑Deploymentkubectl edit deployment nginx-deployment# 查看更新状态kubectl rollout status deployment/nginx-deployment