Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging Kubernetes(GKE)测井解决方案_Logging_Kubernetes_Google Kubernetes Engine_Monitoring_Sidecar - Fatal编程技术网

Logging Kubernetes(GKE)测井解决方案

Logging Kubernetes(GKE)测井解决方案,logging,kubernetes,google-kubernetes-engine,monitoring,sidecar,Logging,Kubernetes,Google Kubernetes Engine,Monitoring,Sidecar,我希望从kubernetes的一个pod中捕获两个用例的日志: 实时->我现在使用的是kubectl日志-- 非实时->使用stackdriver传送到bigquery 对于这两种用例,一切都正常,但是,当容器由于错误提前退出时,我会丢失日志(即stackdriver没有足够快地拾取日志) 是否在某处记录了此延迟?假设stackdriver速度不够快,是否有其他日志记录解决方案更有效?我正在考虑使用一个能够捕获日志的sidecar容器,但我不确定这是否是最好的方法。GKE上的日志堆栈用于从 这不

我希望从kubernetes的一个pod中捕获两个用例的日志:

  • 实时->我现在使用的是
    kubectl日志--
  • 非实时->使用
    stackdriver
    传送到
    bigquery
  • 对于这两种用例,一切都正常,但是,当容器由于错误提前退出时,我会丢失日志(即stackdriver没有足够快地拾取日志)


    是否在某处记录了此延迟?假设stackdriver速度不够快,是否有其他日志记录解决方案更有效?我正在考虑使用一个能够捕获日志的sidecar容器,但我不确定这是否是最好的方法。

    GKE上的日志堆栈用于从

    这不是您在使用
    kubectl日志时所做的:

    当您像在基本日志示例中一样运行
    kubectl logs
    时,节点上的kubelet将处理请求并直接从日志文件读取,并在响应中返回内容

    您发出的听起来好像Stackdriver不够快,但是,由于某种原因,您的容器运行时没有将日志写入前面提到的日志文件,fluentd在导出日志之前会在该日志文件中拾取日志

    在更改日志记录体系结构之前,您可能希望,甚至是为了以后使用

    如果这不适合你的需要,你可以试试

    至于侧车方法,虽然它是完全可行的,但警告这种方法存在一些缺点:

    在sidecar容器中使用日志代理可能会导致大量资源消耗。此外,您将无法使用kubectl logs命令访问这些日志,因为它们不受kubelet的控制

    最后,您还应该考虑到所有以前的信息依赖于“强”容器到达创建阶段的事实,并且它能够写入日志文件>。如果您的容器有“提前退出”,也就是说,那么日志可能根本就不存在,Stackdriver将永远不会拾取它们

    编辑:


    <>请注意,您还需要考虑一个失败的容器需要同时写入两个输出,即“代码> STDUT/<代码>和<代码> STDRR 。如果它“静默”失败,也不会反映在Stackdriver中。

    我假设您的POD有
    重启策略:始终
    。您可以尝试将其设置为
    从不
    ,以便有时间获取日志。RepilcaSet控制器将分配一个新的Pod,因此这对您来说应该不是问题。试试看,让我知道你是怎么做的go@Serge你能在这里再详细说明一下吗?“让您有时间获取日志”是什么意思?使用
    restartPolicy:Always
    ,您的容器在失败时总是会重新启动(具有指数退避)。如果禁用此选项,容器将不会在pods中重新启动。这将留下一段时间来测试您的理论-由于时间/速度问题,日志正在丢失。