gpt4 book ai didi

kubernetes - kubectl - 以 json 格式检索部署的当前/"new"副本集

转载 作者:行者123 更新时间:2023-12-05 01:13:45 26 4
gpt4 key购买 nike

我们正在尝试构建一些简单的自动化来检测部署是否已完成滚动更新,或者滚动更新是否失败。天真的方法(我们今天所做的)是简单地获取部署的所有 pod,并等待它们准备就绪。我们查看所有 pod,如果其中一个 pod 重启了 3 次或更多次( self 们开始更新以来),我们将回滚更新。这在大多数情况下都很好用。它不会出现的情况是当前部署的版本由于任何原因处于失败状态,因此现有 pod 不断重启,从我们这端触发回滚。

所以我的想法是在启动滚动更新后监视正在推出的新副本集中的 pod。这样我们就不会将先前版本中失败的 pod 检测为滚动更新的失败。我已经找到如何在副本集中找到 pod(PS:我使用 powershell 作为我的 shell,但希望转换为 bash 或任何你喜欢的东西是相当简单的):

kubectl get pod -n <namespace> -l <selector> -o json | ConvertFrom-Json | Where {$_.metadata.ownerReferences.name -eq <replicaset-name>}

而且我可以使用相同的方法轻松找到哪个副本集属于部署,只需查询副本集并再次过滤其 ownerReference。

但是,在滚动更新期间,部署至少有两个副本集:新的和旧的。如果我使用“kubectl describe deployment”,我可以看到它们的名称——但如果不进行一些文本处理,这对自动化不是很友好。这似乎是一种脆弱的方式。如果我能在 json 中找到相同的信息,那就太好了,但似乎不存在。

所以,我的问题是:如何找到部署与当前/旧副本集之间的连接,最好是 JSON 格式?是否有一些其他资源可以“连接”这两者,或者是否有一些关于副本集本身的信息我可以用来区分新旧副本集?

最佳答案

部署将使用 deployment.kubernetes.io/revision 注释指示副本集的当前“修订版”。

metadata:
annotations:
deployment.kubernetes.io/revision: "4"

这将存在于部署和副本集上。具有修订版 N-1 的副本集将是“旧”副本集。

关于kubernetes - kubectl - 以 json 格式检索部署的当前/"new"副本集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59848252/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com