簡體   English   中英

來自 kubectl logs 命令的 Kube.netes 日志與 GKE 集群中的 /var/log/containers 不同

[英]Kubernetes logs from kubectl logs command is different to /var/log/containers in GKE cluster

我在 GCP 上創建了一個 GKE 集群。

來自 kubectl logs 命令的 Kube.netes 日志與 /var/log/containers 不同

kubectl

{"method":"GET","path":"/healthz","format":"*/*","controller":"Public::PublicPagesController","action":"healthz","status":204,"duration":0.39,"view":0.0,"request_id":"ca29b519-d1e8-49a2-95ae-e5f23b60c36f","params":{},"custom":null,"request_time":"2022-04-27T15:25:43.780+00:00","process_id":6,"@version":"vcam-backend-vvcam-72_shareholder_event-rc16","@timestamp":"2022-04-27T15:25:43.780Z","message":"[204] GET /healthz (Public::PublicPagesController#healthz)"}

並登錄 /var/log/containers,將時間戳添加到我的容器日志的開頭:

2022-04-27T15:25:43.780523421Z stdout F {"method":"GET","path":"/healthz","format":"*/*","controller":"Public::PublicPagesController","action":"healthz","status":204,"duration":0.39,"view":0.0,"request_id":"ca29b519-d1e8-49a2-95ae-e5f23b60c36f","params":{},"custom":null,"request_time":"2022-04-27T15:25:43.780+00:00","process_id":6,"@version":"vcam-backend-vvcam-72_shareholder_event-rc16","@timestamp":"2022-04-27T15:25:43.780Z","message":"[204] GET /healthz (Public::PublicPagesController#healthz)"}

我希望我的應用程序日志是一致的,我希望它采用 json 格式,就像來自 kubectl 命令的日志一樣,這樣我就可以解析和分析更多。

我想刪除這部分: 2022-04-27T15:25:43.780523421Z stdout F

有人遇到這個問題嗎? 如何使容器日志與 kubectl 命令日志相同?

GKE 版本:

Server Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.10-gke.2000", GitCommit:"0823380786b063c3f71d5e7c76826a972e30550d", GitTreeState:"clean", BuildDate:"2022-03-17T09:22:22Z", GoVersion:"go1.16.14b7", Compiler:"gc", Platform:"linux/amd64"}

Docker 守護進程.json

{
  "pidfile": "/var/run/docker.pid",
  "iptables": false,
  "ip-masq": false,
  "log-level": "warn",
  "bip": "169.254.123.1/24",
  "mtu": 1460,
  "storage-driver": "overlay2",
  "live-restore": true,
  "log-driver": "json-file",
  "log-opts": {
      "max-size": "10m",
      "max-file": "5"
    }
}

注意:我注意到日志行開頭的時間戳僅在我們添加選項docker logs -t時顯示,文檔在這里但我仍然不知道如何解決 GKE 集群中的這個問題。

此問題與容器運行時接口 (CRI) 有關。 您可以在此處閱讀有關 CRI 的信息。

現在,我仍然無法隨心所欲地更改日志格式,我只是適應這種新格式。 這種格式稱為CRI log format ,GKE 集群的 CRI 默認總是以這種格式產生日志,聚合日志應用也適應這種新的 CRI 日志格式:

  • 這是Grafana/Loki支持 CRI 日志格式的 PR: PR
  • Fluent-bit 為 CRI 日志格式創建一個新的解析器: Docs

所以我認為你需要改變解決這個問題的方式:如果我們不能改變我們想要的日志格式,我們可以使用支持這種日志格式的應用程序。

注意:我不確定,但我認為這個問題來自: Kube.netes is removing support for Docker as a container runtime - docs ,新的容器運行時生成這種 CRI 日志格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM