【问题标题】:What are "snapshot logs" and how they differ from "standard(?) logs" in Kubernetes?什么是“快照日志”以及它们与 Kubernetes 中的“标准(?)日志”有何不同?
【发布时间】:2022-01-26 03:32:22
【问题描述】:

我正在寻找一种方法来流式传输我的特定部署的所有 pod 的日志。
所以,几天前我发现this SO answer给了我一个神奇的命令:

kubectl logs -f deployment/<my-deployment> --all-containers=true

但是,经过大量调试后,我刚刚发现此命令实际上只显示了一个 pod 的日志,而不是所有部署的日志。 所以我去了Kubectl's official documentation,并没有发现任何与该主题相关的内容,只是在使用部署作为一种选择器的示例上方的以下短语用于日志流:

  ...
  
  # Show logs from a kubelet with an expired serving certificate
  kubectl logs --insecure-skip-tls-verify-backend nginx
  
  # Return snapshot logs from first container of a job named hello
  kubectl logs job/hello
  
  # Return snapshot logs from container nginx-1 of a deployment named nginx
  kubectl logs deployment/nginx -c nginx-1

那么为什么显示的第一个示例显示“显示日志”而另外两个显示“返回快照日志”?

是不是因为这个“快照”,我无法从部署的所有 pod 中检索日志? 我已经搜索了很多关于使用 kubectl 流式日志的更深入的文档,但找不到任何内容。

【问题讨论】:

    标签: kubernetes kubectl


    【解决方案1】:

    要返回部署的所有 pod(s) 日志,您可以使用与部署相同的选择器。您可以像 kubectl get deployment &lt;name&gt; -o jsonpath='{.spec.selector}' --namespace &lt;name&gt; 这样检索部署选择器,然后使用相同的选择器 kubectl logs --selector &lt;key1=value1,key2=value2&gt; --namespace &lt;name&gt; 检索日志

    【讨论】:

    • 虽然你的回答很有用,但它并没有回答我原来的问题。不过谢谢!
    • Is it because of this "snapshot" that I can't retrieve logs from all the pods of the deployment? - 不,因为答案向您展示了如何做到这一点。
    猜你喜欢
    • 2017-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-11
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    • 2018-04-02
    相关资源
    最近更新 更多