为什么请求正文没有出现在 Kubernetes API 服务器审核日志中?
Why isn't the request body showing up in the Kubernetes API server audit log?
我已将以下命令行参数添加到 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 服务器上的审计日志文件中的任何地方都没有看到这个请求体。我的配置有什么问题?
请求居然只在ResponseComplete
阶段记录,有点出乎意料。尽管 Kubernetes 可以 理论上在收到请求后立即记录请求,但它不会。
因此需要从策略配置文件 (audit.yaml
) 的 omitstages
中删除 ResponseComplete
行。
我已将以下命令行参数添加到 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 服务器上的审计日志文件中的任何地方都没有看到这个请求体。我的配置有什么问题?
请求居然只在ResponseComplete
阶段记录,有点出乎意料。尽管 Kubernetes 可以 理论上在收到请求后立即记录请求,但它不会。
因此需要从策略配置文件 (audit.yaml
) 的 omitstages
中删除 ResponseComplete
行。