158
kubectl logs <pod-id>

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

编辑:最后更正了问题。

4

9 回答 9

261
kubectl logs -f <pod-id>

您可以使用该-f标志:

-f, --follow=false: Specify if the logs should be streamed.

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#logs

于 2016-09-12T17:47:45.607 回答
32

kubectl logs --help将指导您:

例子:

# Begin streaming the logs of the ruby container in pod web-1
kubectl logs -f -c ruby web-1

标志:

-f, --follow[=false]: Specify if the logs should be streamed.

您也可以--since=10m从该相对时间之前添加左右。

于 2016-09-12T17:55:24.800 回答
14

我需要访问一个长时间运行的 pod 的日志,并-f从几天前开始流式传输日志,这需要几个小时才能到达我需要查看的位置(仅在最后几分钟左右)。

--since=10m一面旗帜,但这似乎对我不起作用。

奇怪的是,最近要显示的行数--tail=100在哪里。100

于 2019-04-28T21:24:16.680 回答
9

尝试这个,

豆荚的尾部原木

kubectl --tail <"行数"> 日志 <"pod_name">

示例

kubectl --tail 100 日志 app_pod

于 2020-04-04T13:31:14.557 回答
7

如果您想从多 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-9pbpnapp2-v31-q74wg 的日志

于 2019-06-14T12:10:36.457 回答
4

等待 kubes 启动 pod 然后继续...

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
于 2018-03-29T22:20:51.850 回答
3

您可以使用 -f 跟踪日志

kubectl logs -f <pod_name>

如果日志停止很可能是 pod 崩溃了,你能检查 pod 是否真的在运行吗?检查年龄可能或:

kubectl describe deploy/ds <deploy_or_ds_name>?

或者您也可以在有多个容器的情况下检查 pod 内容器的日志

kubectl logs -f <pod_name> -c <container_name> 
于 2020-07-25T00:02:27.033 回答
1

建议

您似乎希望从终端查看日志,而不使用“繁重的”第 3 方日志记录解决方案。

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


如何使用该工具(几行)

在当前终端中设置 K8S 上下文后,您只需输入k9s即可点击仪表板。从那里,您可以键入要查看的资源(服务、部署、pod..),方法是键入":"- 和资源名称。

您还可以从命名空间级别开始,一直到 pod 和容器日志 - 如下例所示:

在此处输入图像描述


备择方案

如果您不仅绑定到 CLI,还想在本地运行,我建议您在Lens上运行。

于 2021-01-24T10:21:55.243 回答
0

kubctl 日志 -f=true [pod 名称] -c [容器名称]

如果您在 pod 上只有一个容器,则不需要容器名称,否则使用带有 -c 选项的容器名称。-f 即跟随默认为假。如果您不将其设置为 true,您将获得容器日志的快照。

于 2019-12-12T07:11:02.987 回答