kubectl logs <pod-id>

从我的部署中获得最新的日志-我正在处理一个错误,并有兴趣了解运行时的日志-我如何获得连续的日志流?

编辑:最后更正的问题。


当前回答

建议

似乎您希望在不使用“沉重的”第三方日志记录解决方案的情况下从您的终端查看日志。

为此,我会考虑使用K9S,它是一个很棒的CLI工具,可以帮助您控制集群——查看不同的k8s资源,在工作负载之间导航,深入日志并持续地观察它们。


如何使用工具(几行)

在当前终端中设置K8S上下文后,只需输入k9s来点击仪表板。在那里,你可以输入你想要查看的资源(服务、部署、pod..),输入“:”-以及资源名称。

你也可以从命名空间级别开始,一直到pods和容器日志——如下面的例子所示:


选择

如果你不是只绑定到CLI,但仍然想在本地运行,我会推荐在Lens。

其他回答

建议

似乎您希望在不使用“沉重的”第三方日志记录解决方案的情况下从您的终端查看日志。

为此,我会考虑使用K9S,它是一个很棒的CLI工具,可以帮助您控制集群——查看不同的k8s资源,在工作负载之间导航,深入日志并持续地观察它们。


如何使用工具(几行)

在当前终端中设置K8S上下文后,只需输入k9s来点击仪表板。在那里,你可以输入你想要查看的资源(服务、部署、pod..),输入“:”-以及资源名称。

你也可以从命名空间级别开始,一直到pods和容器日志——如下面的例子所示:


选择

如果你不是只绑定到CLI,但仍然想在本地运行,我会推荐在Lens。

如果你想从一个多pod应用程序中获取日志流,你可以使用kubetail,例如:

kubectl get pods

NAME                   READY     STATUS    RESTARTS   AGE
app2-v31-9pbpn         1/1       Running   0          1d
app2-v31-q74wg         1/1       Running   0          1d

kubetail app2

使用该命令,kubetail将跟踪pod app2-v31-9pbpn和app2-v31-q74wg的日志

我需要访问一个长时间运行的pod的日志,而-f开始流几天前的日志,这需要花费几个小时才能到达我需要查看的地方(仅仅是最后几分钟左右)。

有一个——since=10m的标志,但这似乎对我不起作用。

最神奇的是——tail=100,其中100是要显示的最近行数。

等待kubes旋转吊舱,然后继续前进…

k8s_pod=some_pod
kubectl get pods -w $k8s_pod | while read LOGLINE
do
   [[ "${LOGLINE}" == *"Running"* ]] && pkill -P $$ kubectl
done

尾日志

for line in $(kubectl get pods | grep $k8s_pod | awk '{print $1}'); do
    kubectl logs -f $line | tee logfile
done

寻找成功的标志

tail logfile | grep successful! 
RESULT=$?
exit $RESULT

Kubctl logs -f=true [pod-name] -c [container-name]

如果你在pod上只有一个容器,容器名是不需要的,否则使用容器名和-c选项。 -f即follow默认为false。如果您没有将其设置为true,您将获得容器日志的快照。