kubectl logs - continuously
1 | kubectl logs <pod-id> |
从我的部署中获取最新日志 - 我正在处理一个错误并有兴趣了解运行时的日志 - 如何获得连续的日志流?
编辑:最后更正了问题。
1 | kubectl logs -f <pod-id> |
您可以使用
https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#logs
示例:
1 2 | # Begin streaming the logs of the ruby container in pod web-1 kubectl logs -f -c ruby web-1 |
标志:
1 | -f, --follow[=false]: Specify if the logs should be streamed. |
你也可以添加
我需要访问一个长时间运行的 pod 的日志,而
有一个
奇怪的是
试试这个,
来自 pod 的尾日志
kubectl --tail <"no of lines"> 日志 <"pod_name">
示例:
kubectl --tail 100 日志 app_pod
如果你想从多 pod 应用中获取日志流,你可以使用 kubetail,例如:
1 2 3 4 5 6 7 | 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
的日志
等待 kubes 启动 pod 然后继续...
1 2 3 4 5 | k8s_pod=some_pod kubectl get pods -w $k8s_pod | while read LOGLINE do [["${LOGLINE}" == *"Running"* ]] && pkill -P $$ kubectl done |
尾原木
1 2 3 | for line in $(kubectl get pods | grep $k8s_pod | awk '{print $1}'); do kubectl logs -f $line | tee logfile done |
寻找成功指标
1 2 3 | tail logfile | grep successful! RESULT=$? exit $RESULT |
您可以使用 -f
跟踪日志
1 | kubectl logs -f <pod_name> |
如果日志停止很可能是 pod 崩溃了,你能检查 pod 是否真的在运行吗?检查年龄可能或:
1 | kubectl describe deploy/ds <deploy_or_ds_name>? |
或者你也可以在有多个容器的情况下查看 pod 内容器的日志
1 | kubectl logs -f <pod_name> -c <container_name> |
建议
您似乎希望在不使用"繁重"的第 3 方日志记录解决方案的情况下从终端查看日志。
为此,我会考虑使用 K9S,它是一个出色的 CLI 工具,可帮助您控制集群 - 查看不同的 k8s 资源,在工作负载之间导航,深入了解日志并持续观察它们。
如何使用该工具(几行)
在当前终端中设置好 K8S 上下文后,您只需输入
您还可以从命名空间级别开始,一直到 pod 和容器日志 - 如下例所示:
备择方案
如果您不仅绑定到 CLI,还想在本地运行,我建议您在 Lens 上运行。
kubctl logs -f=true [pod-name] -c [container-name]
如果您在 pod 上只有一个容器,则不需要容器名称,否则使用带有 -c 选项的容器名称。
-f 即默认情况下跟随为假。如果您不将其设置为 true,您将获得容器日志的快照。