要將 Kubernetes 的 Event 資源單獨存儲到一個獨立的 etcd 集羣,只需在 kube-apiserver 的啓動參數中增加 --etcd-servers-overrides 配置即可,無需遷移數據或重啓其他組件。
配置步驟
- 部署一套獨立的 etcd 集羣,用於專門存儲 Event 數據。假設該集羣的訪問地址為:
https://etcd-event1:2379,https://etcd-event2:2379,https://etcd-event3:2379 - 修改 kube-apiserver 的啓動參數,增加如下配置:
--etcd-servers-overrides=/registry/events#https://etcd-event1:2379,https://etcd-event2:2379,https://etcd-event3:2379
/registry/events是 Kubernetes 內部用於存儲 Event 資源的路徑。#後面是獨立 etcd 集羣的訪問地址,多個地址用英文逗號分隔。
- 重啓 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 限流 。
本文章為轉載內容,我們尊重原作者對文章享有的著作權。如有內容錯誤或侵權問題,歡迎原作者聯繫我們進行內容更正或刪除文章。