本页面简要介绍如何查找和使用 Google Kubernetes Engine (GKE) 日志。
访问日志
您可以通过多种方式访问 GKE 日志:
在 Google Cloud 控制台中,您可以通过以下页面查看日志:
Kubernetes Engine:
- 在集群页面上选择一个集群,然后选择日志标签页。此标签页还会提供针对集群日志的建议查询。
- 在工作负载页面上选择一个工作负载。然后,点击概览标签页上的容器日志或审核日志链接以在日志浏览器中查看日志,或选择日志标签页以在上下文中查看日志。
日志记录:选择日志浏览器,然后使用日志记录过滤条件来选择 Kubernetes 资源,例如集群、节点、命名空间、pod 或容器日志。如需查看查询示例来帮助您开始使用,请参阅 Kubernetes 相关查询。
- 监控:GKE 信息中心显示 GKE 资源(例如集群、节点和 pod)的指标和日志。如需了解详情,请参阅查看可观测性指标。
在 Google Cloud CLI 中:使用
gcloud logging read
命令查询来自集群、节点、pod 和容器的日志。
对于自定义日志汇总、日志分析或与第三方系统的集成,您还可以使用日志记录接收器功能将日志导出到 BigQuery、Cloud Storage 和 Pub/Sub。
了解日志
Cloud Logging 中的日志是日志条目的集合,每个日志条目适用于特定类型的日志记录资源。
资源类型
以下是 GKE 集群特有的资源类型:
日志资源类型 | ||
---|---|---|
gke_cluster |
GKE 集群操作日志 | |
k8s_cluster |
Kubernetes 集群日志 | |
k8s_node |
Kubernetes 节点日志 | |
k8s_pod |
Kubernetes Pod 日志 | |
k8s_container |
Kubernetes 容器日志 | |
k8s_control_plane_component |
Kubernetes 控制平面组件日志 |
当 GKE 写入集群的日志时,每个日志条目都包含资源类型。通过了解日志的显示位置,您可以在需要时更轻松地查找日志。
系统日志
系统日志包括来自以下来源的日志:
在命名空间
kube-system
、istio-system
、knative-serving
、gke-system
、config-management-system
中运行的所有 Pod。未容器化的关键服务,包括
docker
/containerd
运行时、kubelet
、kubelet-monitor
、node-problem-detector
、kube-container-runtime-monitor
。节点的串行端口输出(如果虚拟机实例元数据
serial-port-logging-enable
设置为 true)。从 GKE 1.16-13-gke.400 开始,节点的串行端口输出由 Logging 代理收集。如需停用串行端口输出日志记录功能,请在创建集群期间设置--metadata serial-port-logging-enable=false
。串行端口输出对于排查 GKE 节点崩溃、启动失败、启动问题或关停问题非常有用。停用这些日志可能会限制问题排查。
您的系统审核日志在 Cloud Logging 中显示为以下名称:
- projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access – 数据访问日志
- projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity – 管理员活动日志
- projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event - 系统事件日志
- projects/PROJECT_ID/logs/events – 事件日志
如需详细了解适用于 Kubernetes 集群和 GKE 集群操作资源类型的日志条目,请参阅审核日志记录文档。
还有一些其他系统日志(如写入的 kube-system 日志),它们在控制应用日志的收集中进行了描述。应用日志
Kubernetes 容器收集写入 STDOUT
和 STDERR
的工作负载的日志。您可以使用 k8s_container
或 gke_cluster
资源类型查找工作负载应用日志。您的日志在 Logging 中将显示为如下名称:
projects/PROJECT_ID/logs/stderr – 写入标准错误的日志
projects/PROJECT_ID/logs/stdout – 写入标准输出的日志
控制层面组件日志
如果为 GKE 集群启用了控制平面日志,则某些 Kubernetes 控制平面组件(例如 API 服务器、调度器和控制器管理器)发出的日志将导出到 Cloud Logging。
这些日志使用 k8s_control_plane_component
资源类型,并在 Cloud Logging 中显示为以下名称:
projects/PROJECT_ID/logs/container.googleapis.com%2Fapiserver
projects/PROJECT_ID/logs/container.googleapis.com%2Fscheduler
projects/PROJECT_ID/logs/container.googleapis.com%2Fcontroller-manager
控制平面访问日志
如果您使用 GKE control plane authority,则可以为控制平面实例的所有传入网络连接以及控制平面实例中发生 SSH 事件时启用可选日志。然后,您可以将这些控制平面访问日志与 Access Transparency 日志以及 Kubernetes API 服务器的日志相关联,以便根据需要验证与控制平面实例的连接是否是 Google 人员获得授权的管理员访问权限的结果。如需了解详情,请参阅验证 Google 与集群控制平面的连接。
这些日志使用 gke_cluster
资源类型,并在 Cloud Logging 中显示为以下名称:
projects/PROJECT_ID/logs/container.googleapis.com%2Fkcp_connection
projects/PROJECT_ID/logs/container.googleapis.com%2Fkcp_ssh
集群身份颁发日志
如果您使用 GKE 控制平面授权机构为集群运行自己的证书授权机构 (CA) 和签名密钥,则 GKE 会在这些 CA 和密钥用于在集群中签发 X.509 证书或 JSON Web 令牌 (JWT) 时生成审核日志。然后,您可以将这些身份证书颁发日志与 Kubernetes API 服务器、Certificate Authority Service 和 Cloud Key Management Service 的日志相关联,以跟踪集群中这些证书和 JWT 的使用情况。有关详情,请参阅验证身份证件签发和使用情况。
这些日志是系统事件审核日志,使用 gke_cluster
资源类型,并在 Cloud Logging 中显示为以下名称:
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
在 Logging 界面中查找日志
您可以使用 Logging 界面中的日志浏览器查看日志。
Logs Explorer
利用查询构建器,您可以从下拉菜单中选择字段,也可以手动添加查询参数来构建查询。 例如,如果您要查看 GKE 集群的日志,可以先选择或搜索 Kubernetes 集群资源类型,然后选择位置和集群名称。然后,您可以通过选择日志名称选择器中的活动日志来优化搜索。
日志浏览器提供了另一种使用日志字段浏览器构建搜索查询的方法。它会显示给定日志字段的日志条目数量(按递减顺序排序)。使用日志字段浏览器对 GKE 日志特别有用,因为日志字段浏览器提供了一种为资源选择 Kubernetes 值以构建查询的方法。例如,利用日志字段浏览器,您可以选择特定集群、命名空间、pod 名称和容器名称的日志。
如需详细了解如何使用日志浏览器,请参阅 Logging 文档。
查询示例
如果您要查找特定日志,请使用以下示例查询来帮助您查找 GKE 日志:
排查日志问题
如果您从 GKE 集群中写入大量日志,可能会发现其中许多日志始终不会显示在 Cloud Logging 中。一个可能的原因是日志记录量超过 GKE 支持的日志记录吞吐量。
Logging 支持的每节点日志记录吞吐量最高为 100KB/s。 如果 GKE 集群中的任何节点需要比这更高的日志记录吞吐量,我们建议提高日志记录代理吞吐量。