本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

为大型安装调整etcd

当使用Rancher管理大型基础设施时,建议将etcd的默认键空间从默认的2 GB增加到更高的值。最大设置为8 GB,主机应具有足够的RAM以将整个数据集保留在内存中。在增加此值的同时,您还应选用配置更高的主机。如果您预计在垃圾回收间隔期间会有高频率的pod变化,则在较小的安装中也可以调整键空间大小。

etcd数据集会在Kubernetes的五分钟间隔内自动清理。在某些情况下,例如部署抖动,可能会有足够的事件被写入etcd并在垃圾回收发生之前被删除,从而导致键空间填满。如果您在etcd日志或Kubernetes API服务器日志中看到`mvcc: database space exceeded`错误,您应考虑增加键空间大小。这可以通过在etcd服务器上配置 quota-backend-bytes来实现。

示例:此RKE2/K3s config.yaml文件片段将键空间大小增加到5 GB。

RKE2/K3s config.yaml
etcd-arg:
  - "quota-backend-bytes=5368709120"

提升etcd磁盘性能

您可以遵循 etcd文档中的建议,了解如何调整主机上的磁盘优先级。

此外,为了减少etcd磁盘上的IO争用,您可以为数据和wal目录使用专用设备。根据etcd最佳实践,镜像独立磁盘冗余阵列配置是多余的,因为etcd在集群中的节点之间复制数据。您可以使用条带化独立磁盘冗余阵列配置来增加可用的IOPS。

要在RKE2/K3s集群中实现此解决方案,/var/lib/etcd/data`和/var/lib/etcd/wal`目录需要在底层主机上挂载和格式化磁盘。在`etcd`服务的`extra_args`指令中,您必须包含`wal_dir`目录。如果不指定`wal_dir`,etcd进程将尝试以不足的权限操作底层`wal`挂载。

RKE2/K3s config.yaml
etcd-arg:
  - "data-dir=/var/lib/etcd/data"
  - "wal-dir=/var/lib/etcd/wal"