k8s-deployment版本回退

"linux"

Posted by yangsir on March 24, 2024

“Yeah It’s on. ”

Deployment 版本回退

在 Kubernetes 中,Deployment 提供了方便的回滚机制,可以将 Deployment 回滚到之前的版本。这是通过 Kubernetes 的 Deployment 历史记录和版本控制来实现的。以下是如何使用 Deployment 回滚到之前版本的步骤:

检查 Deployment 历史记录

首先,你可以检查 Deployment 的历史记录,以查看可以回滚的版本。使用以下命令:

1
kubectl rollout history deployment <deployment-name>

例如:

1
kubectl rollout history deployment my-app

这将显示 Deployment 的所有修订版本:

1
2
3
4
5
deployments "my-app"
REVISION  CHANGE-CAUSE
1         <none>
2         <none>
3         <none>

回滚到指定版本

如果你想回滚到特定的修订版本,可以使用以下命令:

1
kubectl rollout undo deployment <deployment-name> --to-revision=<revision-number>

例如,回滚到修订版本 2:

1
kubectl rollout undo deployment my-app --to-revision=2

回滚到上一个版本

如果你只想回滚到上一个版本,可以简单地使用以下命令:

1
kubectl rollout undo deployment <deployment-name>

例如:

1
kubectl rollout undo deployment my-app

检查回滚状态

在回滚之后,可以使用以下命令检查 Deployment 的状态,以确保回滚成功:

1
kubectl rollout status deployment <deployment-name>

例如:

1
kubectl rollout status deployment my-app

配置变更原因

为了更好地跟踪变更,你可以在每次更新 Deployment 时,添加 --record 参数,这样每次变更的原因将会记录在历史记录中:

1
kubectl apply -f deployment.yaml --record

或者在编辑 Deployment 时,添加 --record 参数:

1
kubectl set image deployment/my-app my-app-container=my-app:2.0 --record

这样在执行 kubectl rollout history deployment <deployment-name> 命令时,你将看到每次变更的原因:

1
2
3
4
5
deployments "my-app"
REVISION  CHANGE-CAUSE
1         kubectl apply --filename=deployment.yaml --record=true
2         kubectl set image deployment/my-app my-app-container=my-app:2.0 --record=true
3         kubectl set image deployment/my-app my-app-container=my-app:1.0 --record=true

总结

回滚 Deployment 的过程非常简单,并且 Kubernetes 提供了强大的版本控制和历史记录功能,使得回滚到之前的版本变得非常方便和可靠。通过上述步骤,你可以轻松地将 Deployment 回滚到之前的稳定版本,以解决可能出现的问题。