You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查看所有用户向Kubernetes集群发出的kubectl命令?

Kubernetes 原生实现kubectl操作命令查询方案

有原生方案,核心依赖Kubernetes自带的审计日志功能,无需安装第三方组件即可实现所有集群操作请求的记录,其中就包含所有用户通过kubectl发起的操作。


实现步骤

1. 开启kube-apiserver审计能力

你需要修改kube-apiserver的启动参数,新增以下配置项:

  • --audit-policy-file:指定审计策略文件的绝对路径,用来定义需要记录的请求范围
  • --audit-log-path:指定审计日志输出的文件路径,设置为-则输出到标准输出
  • --audit-log-maxage:审计日志最多保留的天数
  • --audit-log-maxbackup:最多保留的审计日志文件数量
  • --audit-log-maxsize:单个审计日志文件的最大容量,单位为MB

修改完成后重启kube-apiserver生效。

2. 配置审计策略

你可以根据需求调整审计粒度,以下是可覆盖所有kubectl操作的最小策略示例:

apiVersion: audit.k8s.io/v1
kind: Policy
rules:
  # 记录所有已认证用户的完整请求、响应内容
  - level: RequestResponse
    user:
      group: ["system:authenticated"]
    omitStages:
      - "RequestReceived"

说明:审计级别设置为RequestResponse即可完整记录请求的操作类型、操作对象、请求参数,对应kubectl执行的apply、delete、edit等所有操作的具体内容都会被留存。

3. 检索kubectl操作记录

审计日志中user.username字段对应发起请求的用户身份,verb字段对应操作类型(get、create、delete、patch等),requestObject、requestURI字段存储了具体操作的资源、参数信息,你可以直接用命令过滤日志:

  • 检索所有用户的创建操作:grep '"verb":"create"' <你的审计日志文件路径>
  • 检索指定用户的所有操作:grep '"username":"<目标用户名>"' <你的审计日志文件路径>

注意事项

  • 审计日志会占用磁盘空间,建议根据集群操作频率调整日志保留规则,避免磁盘被占满
  • 如果是云厂商托管的K8s集群,一般审计功能已经内置,直接在集群控制台开启即可,不需要手动修改apiserver配置
  • 审计日志会记录所有调用apiserver的请求(包括集群控制器、第三方组件的请求),你可以调整审计策略过滤只保留普通用户的操作,减少日志存储量

内容的提问来源于stack exchange,提问作者humble_wolf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 08:24:03