1. 应用版本更新
#查看image
kubectl describe pods
#设置应用的image为新版本 v1 -> v2
kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=docker.io/jocatalin/kubernetes-bootcamp:v2
#验证更新结果
export NODE_PORT="$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}')"
echo "NODE_PORT=$NODE_PORT"
curl http://"$(minikube ip):$NODE_PORT"
#确认更新状态
kubectl rollout status deployments/kubernetes-bootcamp
#检查是否已经更新为最新的image
kubectl describe pods
可以通过 kubectl describe pods 看到4个POD的image都更新成功了,从 v1 更新成了 v2
2. 更新内容回滚
#这里再做一次版本更新 v2 -> v10
kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=gcr.io/google-samples/kubernetes-bootcamp:v10
#查看各资源状态是 - 因为 v10 这个image不存在
kubectl get deployments
kubectl get pods
kubectl describe pods
#执行回滚操作 - 回滚到前一个应用版本
kubectl rollout undo deployments/kubernetes-bootcamp
#状态查看
kubectl get pods
kubectl describe pods
#测试完毕,删除集群
kubectl delete deployments/kubernetes-bootcamp services/kubernetes-bootcamp
v10版本的 image 更新拉取失败
执行回滚命令后版本号变成了 v2,测试OK