本页面介绍如何访问 Kubernetes apiserver 审核日志。
概览
每个 GKE On-Prem 集群都有 Kubernetes 审核日志记录,可按时间顺序记录对集群的 Kubernetes API 服务器的调用。审核日志适合用于调查可疑的 API 请求或收集统计信息。
基于磁盘的审核日志记录
默认情况下,来自每个 API 服务器的审核日志会转储到永久性磁盘,这样虚拟机重启/升级就不会导致日志消失。GKE On-Prem 最多可保留 10 GB 的审核日志。
Cloud Audit Logging
如果启用了 Cloud Audit Logging,则系统会使用安装期间设置的项目和位置,将所有 API 服务器的管理员活动审核日志发送到 Google Cloud。
访问 Kubernetes 审核日志
基于磁盘的审核日志记录
您只能通过管理集群访问审核日志:
查看在集群中运行的 Kubernetes API 服务器:
kubectl get pods --all-namespaces -l component=kube-apiserver
下载 API 服务器的审核日志:
kubectl cp -n [NAMESPACE] [APISERVER_POD_NAME]:/var/log/kube-audit/kube-apiserver-audit.log /tmp/kubeaudit.log
此命令会提取最新的日志文件,该日志文件对于管理员集群最多可以包含 1 GB 的数据,而对于用户集群最多可以包含 850 GB 的数据。
较早的审核记录保存在单独的文件中。如需查看这些文件,请运行以下命令:
kubectl exec -n [NAMESPACE] [APISERVER_POD_NAME] -- ls /var/log/kube-audit -la
每个审核日志的文件名都有一个时间戳,用于指明文件的轮替时间。文件包含该时间和日期之前的审核日志。
Cloud Audit Logging
控制台
在 Google Cloud 控制台中,前往日志记录菜单中的日志页面。
在按标签过滤或搜索文字框中(在上述下拉菜单上方),点击向下箭头以打开下拉菜单。 从菜单中,选择转换为高级过滤条件。
在文本框中填写以下过滤条件:
resource.type="k8s_cluster" logName="projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity" protoPayload.serviceName="anthosaudit.googleapis.com"
点击提交过滤条件以显示来自配置为登录此项目的 GKE On-Prem 集群的所有审核日志。
gcloud
列出项目的管理员活动日志中适用于 k8s_cluster
资源类型的前两个日志条目:
gcloud logging read \ 'logName="projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity" \ AND resource.type="k8s_cluster" \ AND protoPayload.serviceName="anthosaudit.googleapis.com" ' \ --limit 2 \ --freshness 300d
其中,[PROJECT_ID] 是您的项目 ID。
输出内容会显示两个日志条目。请注意,对于每个日志条目,logName
字段的值为 projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity
,并且 protoPayload.serviceName
等于 anthosaudit.googleapis.com
。
审核政策
审核日志记录行为由静态配置的 Kubernetes 审核日志记录政策决定。目前不支持更改此政策。