在kubernetes中,我如何跟踪未来Job pod的日志



我有一个创建pod的作业,我可以像这样跟踪它的日志:

kubectl logs job/migration --follow

然而,由于这是一个作业,因此pod应该运行、完成然后终止。如果我运行上面的命令,我可以看到最后一次运行pod的日志,但kubectl在打印出所有日志后退出,可能是因为它试图跟随的所有pod都已终止。

我的工作有这样的注释:

annotations:
helm.sh/hook: post-install,post-upgrade

这样,当我运行helm install ...时,它将导致Job创建另一个pod,该pod再次运行并按预期终止。

我的问题是,是否可以构造一个kubctl logs ...命令,以便我可以跟踪未来迁移pod的日志?这样我就可以在一个终端中跟踪命令,然后在另一个终端运行helm install,然后我会立即在我的终端中看到新pod的日志?

您也可以使用stern。

stern --namespace example migrationstern --namespace -l component=migration将分别显示名称中包含单词"migration"的所有当前和未来pod的所有日志。标签。

该工具打印出所有pod/容器的所有日志,并与(部分(名称相匹配,因此您也可以使用stern --namespace example mig。您还可以包含/排除某些容器,针对所有命名空间运行,并获得非常好的着色模式来区分不同的pod/容器。

我认为解决方案是使用xargs

为了实现这一点,我们需要添加-o name来只获取现有pod和新pod的名称,然后将其管道传输到xargs中,并在它们发生时遵循它们的日志。

kubectl get pods -n example -l component=migration --watch -o name 
| xargs kubectl logs -n example --follow

欢迎改进。

最新更新