使用kubeadm时,如何在kubeapi-server上设置与审核相关的标志?

时间:2018-07-30 21:21:26

标签: kubernetes kubelet kube-apiserver

我正在尝试启用“审核”。 https://kubernetes.io/docs/tasks/debug-application-cluster/audit/提到:

  

您可以使用以下命令将带有策略的文件传递给kube-apiserver:   --audit-policy-file标志。如果省略该标志,则不会记录任何事件。

我已经使用kubeadm来配置集群(总共在3个VM中运行)。

但是使用kubeadm时该设置在哪里?我看不到它与kube-apiserver交互的地方。

3 个答案:

答案 0 :(得分:3)

Kubelet和kube-apiserver是Kubernetes堆栈的完全不同的组件。

apiserverKubernetes Controlplane的一部分。 Kubelet本身实际上连接到API服务器。您会感到困惑的是,通常,API Server作为docker容器运行,并且该docker容器可以由kubelet管理。

kubelet可以通过两种方式运行容器:

  • 由控制平面决定(调度程序发送的请求)
  • 作为目录下的yaml或JSON形式的静态清单(默认/etc/kubernetes/manifests

如果您使用的是kubeadm,请查看此目录下的内容。您会看到一个带有API服务器清单的yaml文件。您可以将apiserver标志添加到此清单中,并使用新标志重新启动API服务器。

但是,如注释中所述,您正在使用kubeadm。有一个正确的方法可以执行此操作,升级后该方法将继续存在。如果您查看kubeadm init的文档页面,将会看到一个选项“将kubeadm init与配置文件一起使用”

因此,您将为kubeadm编写一个yaml配置文件,该文件在config.yaml中看起来像这样:

apiVersion: kubeadm.k8s.io/v1alpha2
auditPolicy:
  logDir: /var/log/kubernetes/audit
  logMaxAge: 2
  path: ""

然后运行kubeadm init --config config.yaml

答案 1 :(得分:2)

对于Kubernetes的最新版本,请将其添加到kind: ClusterConfiguration部分:

    apiServer:
      extraArgs:
        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"
      extraVolumes:
        - name: audit
          hostPath: /host/audit.yaml
          mountPath: /etc/kubernetes/audit.yaml
          readOnly: true
          pathType: File

记录所有请求和响应正文的示例/host/audit.yaml文件:

apiVersion: audit.k8s.io/v1
kind: Policy
omitStages:
  - "ResponseStarted"
rules:
  - level: RequestResponse

答案 2 :(得分:0)

apiVersion: kubeadm.k8s.io/v1alpha2
api:
  advertiseAddress: 192.168.0.33
  bindPort: 6443
networking:
  podSubnet: "10.244.0.0/16"
featureGates:
  Auditing: true
auditPolicy:
  logDir: "/var/log/kubernetes/"
  logMaxAge: 20
  path: "/etc/kubernetes/audit.yaml"

还有

cat /etc/kubernetes/audit.yaml 

# Log all requests at the Metadata level.
apiVersion: audit.k8s.io/v1beta1
kind: Policy
rules:
- level: Metadata

在这里找到答案:https://evalle.xyz/posts/how-to-enable-kubernetes-auditing-with-kubeadm/