首页 > 解决方案 > 为什么请求正文没有显示在 Kubernetes API 服务器审核日志中?

问题描述

我添加了以下命令行参数kube-apiserver来启用审计日志记录:

- --audit-log-path=/tmp/k8s-audit.log
- --audit-policy-file=/etc/kubernetes/audit.yaml
- --audit-log-maxage=1
- --audit-log-maxsize=100
- --audit-log-maxbackup=1

的内容/etc/kubernetes/audit.yaml是:

apiVersion: audit.k8s.io/v1
kind: Policy
omitStages:
  - "ResponseStarted"
  - "ResponseComplete"
rules:
  - level: RequestResponse

我已经运行了一个带有详细日志记录的命令,这样我就可以看到请求正文:

$ kubectl --v=10 uncordon cluster-worker2

kubectl 命令将请求正文记录如下:

I0328 09:00:07.591869   47228 request.go:942] Request Body: {"spec":{"unschedulable":null}}

但是我在 kubernetes 服务器上的审计日志文件中的任何地方都看不到这个请求正文。我的配置有什么问题?

标签: kubernetesaudit-loggingkube-apiserver

解决方案


该请求实际上只记录在ResponseComplete舞台上,有些出乎意料。尽管 Kubernetes理论上可以在收到请求后立即记录它,但它不会。

因此有必要从策略配置文件 ( )中删除该ResponseComplete行。omitstagesaudit.yaml


推荐阅读