k8s event 单独存储一个etcd

要将 Kubernetes 的 Event 资源单独存储到一个独立的 etcd 集群,只需在 kube-apiserver 的启动参数中增加 --etcd-servers-overrides 配置即可,无需迁移数据或重启其他组件。

配置步骤

  1. 部署一套独立的 etcd 集群,用于专门存储 Event 数据。假设该集群的访问地址为:
    https://etcd-event1:2379,https://etcd-event2:2379,https://etcd-event3:2379
     
  2. 修改 kube-apiserver 的启动参数,增加如下配置:
    --etcd-servers-overrides=/registry/events#https://etcd-event1:2379,https://etcd-event2:2379,https://etcd-event3:2379
     
    • /registry/events 是 Kubernetes 内部用于存储 Event 资源的路径。
    • # 后面是独立 etcd 集群的访问地址,多个地址用英文逗号分隔。
  3. 重启 kube-apiserver 使配置生效。

注意事项

  • 该配置仅影响 Event 资源的存储,不会干扰其他资源(如 Pod、Service 等)继续使用主 etcd 集群。
  • Event 数据本身有效期较短(默认 1 小时),因此无需做数据迁移或清理旧数据。
  • 适用于大规模集群场景,可显著降低主 etcd 集群的写入压力
# /etc/kubernetes/manifests/kube-apiserver.yaml 片段
spec:
  containers:
  - name: kube-apiserver
    command:
    - kube-apiserver
      # ========= 主 etcd 集群(无 TLS) =========
    - --etcd-servers=http://etcd-main-1:2379,http://etcd-main-2:2379,http://etcd-main-3:2379
      # ========= events 独立 etcd 集群 =========
    - --etcd-servers-overrides=/registry/events#http://etcd-event-1:2379,http://etcd-event-2:2379,http://etcd-event-3:2379
      # ========= 其余业务参数 =========
    - --service-cluster-ip-range=10.96.0.0/16
    - --secure-port=6443
    - --allow-privileged=true
    - --authorization-mode=Node,RBAC
    - --enable-admission-plugins=NodeRestriction,NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota
    - --event-ttl=2h

 

  • --event-ttl 控制 events 在 etcd 中的保留时间,默认 1h,可加大到 2h~4h。
  • --etcd-compaction-interval 建议与主 etcd 保持一致(默认 5m)。
  • --encryption-provider-config 若开启了 etcd 加密,请确保两个集群使用相同的加密配置,否则读旧数据会失败。
  • --max-requests-inflight / --max-mutating-requests-inflight 视集群规模调大,可显著降低 apiserver 限流 。

 

posted @ 2025-11-26 16:42  滴滴滴  阅读(1)  评论(0)    收藏  举报