当前位置: 首页 > article >正文

K8S中的etcd数据库备份与恢复

备份和恢复 etcd 数据是维护 Kubernetes 集群稳定性的关键操作。以下是详细步骤:


一、备份 etcd 数据

方法 1: 使用 etcdctl snapshot save
  1. 连接到 etcd 节点 确保操作在 etcd 所在节点或能访问 etcd 的客户端进行。

  2. 设置环境变量 根据集群配置,设置证书和端点(如果是 kubeadm 部署,证书通常在 /etc/kubernetes/pki/etcd):

    export ETCDCTL_API=3
    ETCD_ENDPOINTS="https://127.0.0.1:2379"
    CERT_DIR="/etc/kubernetes/pki/etcd"
  3. 执行备份 使用 etcdctl 创建快照(替换 snapshot.db 为备份文件名):

    etcdctl --endpoints=$ETCD_ENDPOINTS \
            --cacert=$CERT_DIR/ca.crt \
            --cert=$CERT_DIR/healthcheck-client.crt \
            --key=$CERT_DIR/healthcheck-client.key \
            snapshot save snapshot.db
    • 输出 Snapshot saved at snapshot.db 表示成功。

  4. 验证备份完整性

    etcdctl --write-out=table snapshot status snapshot.db
方法 2: 直接备份数据目录
  • 复制 etcd 数据目录(默认为 /var/lib/etcd)到安全位置:

    cp -r /var/lib/etcd /backup/etcd-backup

二、恢复 etcd 数据

前提条件
  • 停止 etcd 服务:恢复前需停止所有 etcd 实例。

  • 备份当前数据:防止恢复失败导致数据丢失。

恢复步骤
  1. 停止 Kubernetes 组件

    • 停止 kube-apiserver 和 etcd:

      systemctl stop kube-apiserver etcd
  2. 删除旧数据

    rm -rf /var/lib/etcd/*
  3. 使用快照恢复

    ETCD_ENDPOINTS="https://127.0.0.1:2379"
    CERT_DIR="/etc/kubernetes/pki/etcd"
    ​
    etcdctl snapshot restore snapshot.db \
      --name=etcd-node1 \                # 节点名称(与原有配置一致)
      --initial-cluster="etcd-node1=https://10.0.0.1:2380" \
      --initial-cluster-token=etcd-cluster \
      --initial-advertise-peer-urls=https://10.0.0.1:2380 \
      --data-dir=/var/lib/etcd
    • 根据集群拓扑调整 --initial-cluster--initial-advertise-peer-urls

  4. 恢复数据目录权限

    chown -R etcd:etcd /var/lib/etcd
  5. 重启 etcd 和 Kubernetes 服务

    systemctl start etcd kube-apiserver
  6. 验证恢复结果

    • 检查 etcd 集群健康状态:

      etcdctl --endpoints=$ETCD_ENDPOINTS \
              --cacert=$CERT_DIR/ca.crt \
              --cert=$CERT_DIR/healthcheck-client.crt \
              --key=$CERT_DIR/healthcheck-client.key \
              endpoint health
    • 检查 Kubernetes 资源:

      kubectl get pods --all-namespaces

三、注意事项

  1. 集群环境恢复

    • 如果是多节点 etcd 集群,需在所有节点执行类似操作,并确保 --initial-cluster 配置正确。

  2. 定时备份

    • 建议通过 CronJob 定期备份,例如:

      0 * * * * /usr/local/bin/etcd-backup-script.sh
  3. 测试恢复流程

    • 定期在测试环境中演练恢复流程,确保备份有效。


四、常见问题

  • 证书路径错误:检查 --cacert--cert--key 参数是否正确。

  • 权限问题:确保恢复后的数据目录属主是 etcd 用户。

  • 集群无法启动:检查日志 journalctl -u etcd 排查配置错误。

通过以上步骤,可以安全地备份和恢复 etcd 数据,保障 Kubernetes 集群的稳定性。


http://www.kler.cn/a/583885.html

相关文章:

  • 树莓百度百科更新!宜宾园区新业务板块全解析
  • 建筑兔零基础自学记录45|获取高德/百度POI-1
  • AI理论基础
  • 重生之我在学Vue--第12天 Vue 3 性能优化实战指南
  • SpaceSync智能排班:重构未来办公空间的神经中枢
  • 聚划算!三个模型对比预测!CNN-GRU、GRU、CNN三模型多变量时序光伏功率预测
  • 基于boss直聘的招聘数据可视化分析平台-Flask+html
  • PAT乙级(1022 D进制的A+B)C语言
  • ADC采样和存储数据之间的关系
  • 一键阐述“多线程、多进程、多任务”的场景需求
  • Deepseek Chatgpt Kimi 推荐的深度学习书单
  • OpenRewrite配方之import语句的顺序——org.openrewrite.java.OrderImports
  • Spring(一)
  • 工具(十二):Java导出MySQL数据库表结构信息到excel
  • 5G/6G通信技术
  • 便利店商品推荐数字大屏:基于python和streamlit
  • js下载blob二进制文件流 预览
  • 瑞芯微RK3588安卓使用fastboot分区烧录
  • 江科大51单片机笔记【12】AT24C02(I2C总线)
  • 浙江大学第四讲:DeepSeek模型优势:算力、成本角度解读(含PPT及直播回放)(文末附链接下载)