排查 GKE on AWS 的 etcd 问题

本页面介绍如何解决 GKE on AWS 的 etcd 问题。

如果您需要其他帮助,请与 Cloud Customer Care 联系。

etcd 数据磁盘已满

当 etcd 数据磁盘已满时,可能会发生以下错误,并且可以通过几种不同的方式观察到此错误:

  • etcd 日志可能会显示写入请求的超时错误:

    rafthttp: failed to save KV snapshot (write /var/etcd/data/member/snap/tmp720030520: no space left on device)
    

    您可能还会看到与对等方连接的超时错误:

    rafthttp: health check for peer [peer-id] could not connect: dial tcp [peer-ip]:2380: i/o timeout
    etcd server doesn't start:
    
  • 串行端口日志可能表明 etcd 因缺少空间而无法启动:

    failed on file /dev/stdout (No space left on device)
    

要确定 etcd 实例的大小,请使用以下方法之一:

SSH

  1. 使用 SSH 连接到其中一个主节点,然后运行以下命令:

    ETCDCTL_API=3 etcdctl --write-out=table endpoint status
    

    DB_SIZE 列表示使用的大小,如以下精简示例输出所示:

    +------------------+------------------+---------+---------+
    |    ENDPOINT      |        ID        | VERSION | DB SIZE |
    +------------------+------------------+---------+---------+
    | 10.240.0.17:2379 | 4917a7ab173fabe7 |  3.5.0  |   45 kB |
    | 10.240.0.18:2379 | 59796ba9cd1bcd72 |  3.5.0  |   45 kB |
    | 10.240.0.19:2379 | 94df724b66343e6c |  3.5.0  |   45 kB |
    +------------------+------------------+---------+---------+
    

控制台

  1. 在控制台中,转到 Cloud Monitoring 页面。

    转到 Cloud Monitoring 页面

  2. 选择 Metrics Explorer

  3. 选择 metric etcd_mvcc_db_total_size_in_bytes 指标。

如需解决此问题,请按照适合您的存储提供商和操作系统的过程调整 etcd 数据磁盘的大小。添加足够的额外空间来应对未来的 etcd 增长。

  1. 调整磁盘大小后,检查磁盘空间是否仍显示警告:

    ETCDCTL_API=3 etcdctl alarm list
    
  2. 如果最后一列报告 NOSPACE,请按如下方式关闭警报:

    TCDCTL_API=3 etcdctl alarm disarm
    

后续步骤

如果您需要其他帮助,请与 Cloud Customer Care 联系。