跳至主要内容

為大型安裝調整 etcd

當 Rancher 用於管理大型基礎設施時,建議將 etcd 的預設金鑰空間從預設的 2 GB 增加。最大設定為 8 GB,主機應該有足夠的 RAM 來將整個資料集保存在記憶體中。當增加此值時,您還應該增加主機的大小。如果您預期在垃圾收集間隔期間 Pod 會有高變更率,也可以在較小的安裝中調整金鑰空間大小。

Kubernetes 會每五分鐘自動清理 etcd 資料集。在某些情況下,例如部署顛簸,可能會有足夠的事件寫入 etcd 並在垃圾收集發生並清理之前被刪除,導致金鑰空間被填滿。如果您在 etcd 日誌或 Kubernetes API 伺服器日誌中看到 mvcc: database space exceeded 錯誤,您應該考慮增加金鑰空間大小。這可以透過在 etcd 伺服器上設定 quota-backend-bytes 設定來實現。

範例:此 RKE2/K3s config.yaml 檔案片段將金鑰空間大小增加到 5GB​

# RKE2/K3s config.yaml
---
services:
etcd:
extra_args:
quota-backend-bytes: 5368709120

擴展 etcd 磁碟效能​

您可以遵循 etcd 文件中關於如何調整主機上磁碟優先順序的建議。

此外,為了減少 etcd 磁碟上的 IO 競爭,您可以為資料和 wal 目錄使用專用裝置。根據 etcd 最佳實踐,鏡像 RAID 設定是不必要的,因為 etcd 會在叢集中的節點之間複製資料。您可以使用條帶化 RAID 設定來增加可用的 IOPS。

要在 RKE2/K3s 叢集中實現此解決方案,/var/lib/etcd/data 和 /var/lib/etcd/wal 目錄將需要在底層主機上掛載和格式化磁碟。在 etcd 服務的 extra_args 指令中,您必須包含 wal_dir 目錄。如果沒有指定 wal_dir,etcd 程序將嘗試以不足的權限操作底層 wal 掛載。

# RKE2/K3s config.yaml
---
services:
etcd:
extra_args:
data-dir: '/var/lib/rancher/etcd/data/'
wal-dir: '/var/lib/rancher/etcd/wal/wal_dir'
extra_binds:
- '/var/lib/etcd/data:/var/lib/rancher/etcd/data'
- '/var/lib/etcd/wal:/var/lib/rancher/etcd/wal'