我可以查看更多详细信息吗?

时间:2020-08-12 12:17:09

标签: kubernetes

我当时在网站killer.sh上进行了一次实践考试,遇到一个问题,我觉得我对此做了一个拙劣的解决方案。如果部署的部署不正确,请恢复到没有任何问题的 最后 版本。如果我检查部署的推出历史记录,例如,使用以下命令:

kubectl rollout history deployment mydep

我得到一个带有版本号和“更改原因”命令的小表。有什么方法可以检查对部署的yaml文件所做的更改以获取特定版本吗?因为我很困惑,无法确定哪个特定修订版没有错误。

3 个答案:

答案 0 :(得分:3)

Deployment在幕后创建了一个ReplicaSet,其metadata.generation设置为您在REVISION中看到的kubectl rollout history deployment mydep,因此您可以查看和与ReplicaSet关联的旧Deployment

另一方面,作为最终一致的系统,kubernetes没有“好”或“坏”状态的概念,因此,例如,它不知道最后成功的部署是什么。这就是为什么存在诸如helmkapp等部署工具的原因。

答案 1 :(得分:2)

由于kubernetes不是版本控制系统,因此Kubernetes所存储的内容不超过其操作所需的存储量,并且在大多数情况下只是所需状态。

这就是为什么需要使用版本控制系统以及诸如helm或kustomize之类的工具来存储部署Yaml并将其应用到具有新版本软件的群集中的原因。这有助于追溯历史,以便在发生问题时挖掘出细节。

答案 2 :(得分:1)

您可以使用--record选项记录最后执行的更改了部署的命令。使用--record时,您会看到部署元数据.annotations上一次执行的命令(更改原因)。您不会在本地yaml文件中看到此消息,但是当您尝试将部署导出为yaml时,您会注意到更改。

-如下记录选项

kubectl create deployment <deployment name> --image=<someimage> > testdelpoyment.yaml

kubectl create -f testdeployment.yaml --record

or

kubectl set image deployment/<deploymentname> imagename=newimagename:newversion --record