k8s默认是关闭审计功能的,想看的话需要到apiserver的pod中才可以。
开启此功能是为了进行k8s审计日志的收集,方便我们查看k8s中用户的各自操作。
开启此功能之前,我们要先创建个审计策略文件audit-policy.yaml
例如以下的测验文件
yaml
apiVersion: audit.k8s.io/v1
kind: Policy
rules:
# 记录 PVC 创建/删除操作
- level: Metadata
verbs: ["create", "delete"]
resources:
- group: "" # 核心 API 组
resources: ["persistentvolumeclaims"]
# 可选:记录 PVC 更新操作(如状态变更)
- level: Request
verbs: ["update"]
resources:
- group: ""
resources: ["persistentvolumeclaims"]
# 记录命名空间操作(PVC 依赖命名空间)
- level: Metadata
resources:
- group: ""
resources: ["namespaces"]
我把文件放在了/etc/kubernetes/audit-policy.yaml
然后我们备份apiserver文件
cp /etc/kubernetes/manifests/kube-apiserver.yaml /tmp/apiserver-bak.yaml
然后再进行修改操作
yaml
- --audit-policy-file=/etc/kubernetes/audit-policy.yaml
- --audit-log-path=/var/log/audit/kubernetes-audit.log
- --audit-log-maxage=30
- --audit-log-maxbackup=10
- --audit-log-maxsize=100
- --audit-log-format=json
- --audit-log-compress=true
审计策略路径
存放审计文件的路径
日志最大存放时间
日志最大副本数
日志最大存储大小m
日志输出的格式
日志是否开启压缩
这里定义好之后,接着往下把这个存放审计文件的路径挂载到pod中
volumemounts挂载审计策略文件和审计日志路径
在volumes中配置这两个
保存退出,然后把/etc/kubernetes/manifests/kube-apiserver.yaml文件移动到/etc,过十秒后再移动回来/etc/kubernetes/manifests/kube-apiserver.yaml触发apiserver重启,即可查看生效后的审计日志。
tail -f /var/log/audit/kubernetes-audit.log