You need to enable JavaScript to run this app. 如何在k3d搭建的k3s集群中启用并配置审计日志?
优惠活动
大模型
产品
解决方案
定价
更多

如何在k3d搭建的k3s集群中启用并配置审计日志?

k3d 环境下k3s审计日志可落地配置方案

核心解决思路

利用k3d原生的文件挂载能力,在集群启动阶段就将宿主机预先准备好的审计策略文件映射到k3s server容器内的指定路径,确保kube-apiserver启动时可以直接读取到策略文件,避免因文件缺失导致的进程崩溃;同时在集群创建阶段一次性传入所有审计相关的apiserver启动参数,不需要集群启动后再做二次修改。

分步实操流程

  1. 宿主机预先准备审计策略文件
    在本地工作目录创建策略文件,示例基础配置如下(可根据自身审计需求调整规则粒度):

    # 保存路径:当前工作目录下 ./audit-policies/policy.yaml
    apiVersion: audit.k8s.io/v1
    kind: Policy
    rules:
      # 默认记录所有请求的元数据(不记录请求/响应内容),控制日志体量
      - level: Metadata
      # 对Secrets资源的所有操作记录完整请求/响应内容
      - level: RequestResponse
        resources:
          - group: ""
            resources: ["secrets"]
    
  2. 执行集群创建命令,同时完成文件挂载和启动参数传入
    注意这里需要通过k3d的--volume参数将本地的策略文件直接映射到k3s server容器内的固定路径,再传入对应的apiserver启动参数:

    k3d cluster create test-cluster \
      --volume $(pwd)/audit-policies/policy.yaml:/etc/kubernetes/audit-policies/policy.yaml@server:* \
      --k3s-server-arg '--kube-apiserver-arg=audit-log-path=/var/log/kubernetes/apiserver/audit.log' \
      --k3s-server-arg '--kube-apiserver-arg=audit-policy-file=/etc/kubernetes/audit-policies/policy.yaml' \
      --k3s-server-arg '--kube-apiserver-arg=audit-log-maxage=30' \
      --k3s-server-arg '--kube-apiserver-arg=audit-log-maxbackup=10' \
      --k3s-server-arg '--kube-apiserver-arg=audit-log-maxsize=100'
    

    命令参数说明:

    • --volume 段的@server:*标识表示将文件挂载到集群内所有server节点,过滤匹配规则和k3d的节点标签机制一致
    • 传入的所有审计参数都是kube-apiserver的官方标准参数,和原生k8s的审计配置完全兼容
    • 可选追加挂载:如果需要把审计日志直接持久化到宿主机,可额外加一行挂载参数,将容器内的日志目录映射到本地:--volume $(pwd)/audit-logs:/var/log/kubernetes/apiserver@server:*

配置生效验证

  1. 等待集群初始化完成后,执行任意kubectl操作生成访问记录,比如kubectl get pods -A
  2. 进入对应k3s server容器查看日志文件:
    # 进入k3d server容器(容器命名规则为k3d-<集群名>-server-<序号>)
    docker exec -it k3d-test-cluster-server-0 sh
    # 查看审计日志文件内容
    cat /var/log/kubernetes/apiserver/audit.log
    
  3. 如果日志中可以看到刚才执行kubectl命令对应的访问条目,即代表审计配置已经正常生效。

常见踩坑说明

  • 不支持集群创建完成后在线补发审计配置参数:kube-apiserver的启动参数在k3s进程拉起时就已经固化,无法在集群运行状态下热加载参数,即便手动在节点内放入审计策略文件,因为apiserver启动参数中没有指定策略文件路径,配置也不会生效。
  • 挂载路径必须和apiserver参数指定的路径完全匹配:如果挂载到容器内的路径和启动参数中audit-policy-file的值存在拼写、层级差异,apiserver会因为找不到文件直接启动失败,导致集群反复重启无法就绪。
  • 不需要额外提前创建容器内的日志目录:kube-apiserver启动时会自动创建日志文件所在的上级目录,无需额外在容器内预置路径结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 15:24:08