kubectl logs <pod-id>

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

编辑:最后更正的问题。


当前回答

你可以在log后面加上-f

kubectl logs -f <pod_name>

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

kubectl describe deploy/ds <deploy_or_ds_name>?

或者你也可以查看吊舱内集装箱的日志,因为里面有多个集装箱

kubectl logs -f <pod_name> -c <container_name> 

其他回答

如果您想从特定的命名空间获取日志,您可以使用任何一个命令,

kubectl logs -n <NAMESPACE> -f <POD_NAME> -c <CONTAINER_NAME>

or

kubectl logs -n <NAMESPACE> -p <POD_NAME> -c <CONTAINER_NAME> --previous=false

Kubectl logs -f zk-app-0——tail 10

该命令将从最后10行开始输出日志。如果这里没有提到tail,那么k8s将流化所有可用的日志(即最近10 MB的日志或最近5次日志循环)。

然而,有时我遇到使用这个命令时日志流停止的问题。然后我只需按ctrl-c并再次运行该命令。

从容器中的进程中流stdout和stderr的另一种方法是使用kubectl attach。

kubectl attach zk-app-0

这将附加到主容器并传输控制台日志。但是,kubectl日志中没有任何额外的日志功能。在这种情况下,如果日志记录停止,只需在键盘上按enter键,它就会恢复。

kubectl logs -f <pod-id>

你可以使用-f标志:

-f,——follow=false:指定是否对日志进行流式处理。

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

Kubectl日志—帮助将指导您:

例子:

# 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 or so,从相对时间之前开始。

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

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