如何获取K8s集群中特定历史版本Deployment的发布日志
K8s Deployment旧版本发布日志获取方案
首先明确:只要对应版本的ReplicaSet还未被Deployment的历史版本回收机制清理,就可以获取到该版本的发布相关事件与配置信息,具体操作步骤如下:
步骤1:定位目标版本对应的ReplicaSet
首先执行以下命令,列出当前Deployment关联的所有ReplicaSet及其对应的版本号:
kubectl get replicaset -l app=<你的Deployment对应的应用标签> -o custom-columns=NAME:.metadata.name,REVISION:.metadata.annotations.deployment\.kubernetes\.io/revision,READY_REPLICAS:.status.readyReplicas,DESIRED_REPLICAS:.status.replicas
返回结果中REVISION列对应kubectl rollout history里的版本号,找到版本2对应的ReplicaSet名称(格式一般为[Deployment名]-[随机字符串])。
步骤2:查询该版本的发布事件日志
拿到ReplicaSet名称后,执行以下任一命令即可获取对应版本的发布事件:
- 用describe命令查看完整RS信息,末尾自带事件列表:
kubectl describe replicaset <你查到的版本2对应的RS名称> - 直接过滤该RS关联的事件:
kubectl get events --field-selector involvedObject.kind=ReplicaSet,involvedObject.name=<你查到的版本2对应的RS名称>
如果你的集群配置了日志采集组件(比如Loki、ELK等),还可以通过RS名称、版本号作为过滤条件,检索当时该RS启动的Pod的运行时日志。
补充说明
- 执行
kubectl rollout history deployment/pod1-dep --revision=2,可以直接查看该版本对应的Pod模板配置,用于排查发布失败的配置问题。 - Deployment默认的
revisionHistoryLimit参数值为10,即只会保留最近10个历史版本的ReplicaSet,超过阈值的旧RS会被自动清理,一旦RS被清理就无法再获取对应版本的发布事件。 - 集群默认的事件保留时间为1小时,如果要查询更早的发布事件,需要提前配置事件持久化存储。
内容的提问来源于stack exchange,提问作者Pasan Chamikara
相关产品推荐
相关产品推荐

