本实验分为四个阶段:快速创建、弹性伸缩、滚动更新、故障回滚

# 阶段一:快速拉起

在考试中,除非题目明确要求创建 Pod ,否则一律优先使用 Deployment,因为它具备自愈金额扩缩容能力。

1、快速创建一个 Pod(仅用于临时测试)

kubectl run nginx-pod --image=inginx:1.23 --labels="app=test"

2、快速创建一个 Deployment(标准做法)


## 创建一个 Deployment 的部署,包含 3 个副本。
kubectl create deployment web-deploy --image=nginx:1.23 -replicas=3

3、验证分布

## 查看这 3 个 Pod 是不是均匀分布在 Node1 和 Node2 上
kubectl get pods -o wide
# 阶段二:弹性伸缩(Scale)

1、将副本数从 3 扩展到 6:

kubectl scale deployment web-deploy --replicas=6

2、验证:

## 观察 Pod 数量变化
kubectl get pods -w

3、缩减副本(模拟业务降速)

kubectl scale deployment web-deploy --replicas=2

# 阶段三:滚动更新(Rollout)

现在我们把业务版本从 1.23 升级到 1.24。Deployment 的强大之处在于会逐个替换旧 Pod,确保业务不断更。

1、执行更新命令

## 直接修改容器镜像
kubectl set image deployment/web-deploy nginx=nginx:1.24 --record

–record 标志会把这条命令记录在历史中,方便回滚查看

2、实时观看滚动过程:


kubectl get pods -l app=web -w
kubectl rollout status deployment/web-deploy

会看到 Pod 正在一个接一个被创建(ContainerCreating)和删除(Terminating)。

3、查看更新历史

kubectl rollout history deployment/web-deploy

# 阶段四:故障回滚(Undo/Rollback)

这里假设我们不小心更新一个错误镜像,导致业务挂了

1、模拟错误更新

## 使用一个不存在的镜像版本
kubectl set image deployment/web-dploy nginx=nginx:9.9.9 --record

2、检查状态

kubectl get pods

会看到 ImagePullBackOff。

3、紧急回滚到上一个版本

kubectl rollout undo deployment/web-deploy

4、验证是否恢复


## 查看 Pod 详情,确认镜像变回了 1.24
kubectl describe pod <某个web-deploy开头的pod名>  grep Image:

# 清理


kubectl delete deployment web-deploy
kubectl delete pod nginx-pod

# 相关总结

操作

命令行 (Imperative)

说明

创建

kubectl create deployment <name> --image=<img1>

快速拉起控制器

扩缩容

kubectl scale deployment <name> --replicas=N

改变 Pod 数量

更新镜像

kubectl set image deploy/<name> <container>=<img2>

触发滚动更新

查看状态

kubectl rollout status deploy/<name>

监控更新进度

回滚

kubectl rollout undo deploy/<name>

撤销上一次操作

历史

kubectl rollout history deploy/<name>

查看版本记录