如何为导入的标准 Kubernetes 集群配置审计收集?
场景描述
将标准 Kubernetes 集群导入平台后,必须先在集群上启用 Kubernetes API server 审计日志记录,平台才能从该集群收集审计数据。
对于控制平面节点由您管理的标准 Kubernetes 集群,请使用此操作步骤,例如基于 kubeadm 的集群。此操作步骤不适用于由云服务提供商管理的 Kubernetes 服务,因为您无法登录或修改其控制平面节点。
前提条件
- 标准 Kubernetes 集群已导入平台。
- 您可以登录集群中的每个控制平面节点。
- 集群使用标准 kubeadm 风格的 API server 静态 Pod 清单路径:
/etc/kubernetes/manifests/kube-apiserver.yaml。
操作步骤
-
创建一个本地
policy.yaml文件作为审计策略。根据 Kubernetes 版本设置
apiVersion:- 早于 Kubernetes 1.24:
audit.k8s.io/v1beta1 - Kubernetes 1.24 及更高版本:
audit.k8s.io/v1
使用以下内容:
TIP如果集群版本早于 1.24,则仅将
apiVersion字段更改为audit.k8s.io/v1beta1。策略内容的其余部分保持不变。 - 早于 Kubernetes 1.24:
-
将
policy.yaml上传到每个控制平面节点上的/etc/kubernetes/audit/。WARNING- 如果集群包含多个控制平面节点,请将文件上传到每个节点。
- 如果目录不存在,请手动创建:
/etc/kubernetes/audit/
-
在每个控制平面节点上更新
/etc/kubernetes/manifests/kube-apiserver.yaml。在
spec.containers[].command中添加或更新以下与审计相关的标志:示例:
-
将审计目录挂载配置添加到同一个
kube-apiserver.yaml文件中。在
spec.containers[].volumeMounts下添加以下项目:在
spec.volumes下添加以下项目:WARNING- 如果集群包含多个控制平面节点,请在每个控制平面节点上更新清单。
volumeMounts[].name值必须与对应的volumes[].name值一致。- 请勿更改挂载路径
/etc/kubernetes/audit。
-
保存文件并验证配置是否生效。
检查每个控制平面节点上是否生成了
/etc/kubernetes/audit/audit.log。如果文件存在且包含审计记录,则表示配置已生效。