kubernetes数据库etcd的简单操作及备份恢复

一、ETCD简介

etcd是一个高度一致的分布式键值存储,它提供了一种可靠的方式来存储需要由分布式系统或机器集群访问的数据。它可以优雅地处理网络分区期间的领导者选举,即使在领导者节点中也可以容忍机器故障。

etcd是开源的,是kubernetes主流使用的数据库

etcd独立安装方法请参考官网:https://etcd.io/docs/v3.5/install/

二、ETCD操作使用

2.1 etcdctl工具

etcdctl是etcd的命令行客户端,开源代码地址:https://github.com/etcd-io/etcd/tree/main/etcdctl

  • 目前etcdctl的v3 api是默认使用,对于v2的api,需要设置变量ETCDCTL_API=2
  • 如果使用的版本早于v3.4的发布版本,使用v3api需要设置ETCDCTL_API=3

本示例使用的etcdctl是3.5.1版本,所以默认使用api版本是v3,不用设置变量

2.2 安装etcdctl命令

1.如果直接使用二进制的方式安装kubernetes集群的,etcd安装包中自带了etcdctl命令

2.如果使用的kubeadm安装kubernetes集群或者安装的是minikube,需要在主机上单独安装etcdctl

  • 官网下载安装包,拷贝安装包内部的etcdctl命令
  • 拷贝pod内的etcdctl

3.拷贝安装包命令

ETCD安装包下载地址:https://github.com/etcd-io/etcd/releases
在这里插入图片描述
拷贝到系统环境中:cp etcdctl /usr/bin/
etcdctl version
在这里插入图片描述

4.拷贝pod内的命令
查看etcd的容器名称:docker ps|grep etcd
在这里插入图片描述

docker cp 容器name:/usr/local/bin/etcdctl /root/etcdctl
在这里插入图片描述

2.3 常用操作命令

2.3.1 带证书别名etcdctl

查询kubernetes上的etcd数据,命令格式:

etcdctl --cacert=xxx/ca.crt --cert=xxx.crt --key=xxx.key --endpoints=https://127.0.0.1:2379 COMMAND

证书目录可以查询etcd.yaml文件
在这里插入图片描述在这里插入图片描述

使用对应的配置别名etcdctl

alias etcdctl="etcdctl --cacert=/var/lib/minikube/certs/etcd/ca.crt --cert=/var/lib/minikube/certs/etcd/healthcheck-client.crt --key=/var/lib/minikube/certs/etcd/healthcheck-client.key --endpoints=https://127.0.0.1:2379"

2.3.2 基本信息查询

1.member list

成员列表信息

命令:etcdctl member list

人性化表格打印:etcdctl -w table member list
在这里插入图片描述

2.endpoint status

集群节点状态信息

命令:etcdctl endpoint status

JSON格式打印:etcdctl -w json endpoint status

人性化表格打印:etcdctl -w table endpoint --cluster status
在这里插入图片描述

2.3.3 数据查询和修改

  1. PUT

    写入键值对,如果key已经存在,则修改值

    格式:PUT [options]

    选项

    • 租赁 – 附加到密钥的租赁 ID(十六进制)。
    • prev-kv – 返回修改前的前一个键值对。
    • ignore-value – 使用当前值更新键。
    • ignore-lease – 使用当前租约更新密钥。

    示例:etcdctl put foo bar
    在这里插入图片描述
    示例:etcdctl put foo bar1 --prev-kv
    在这里插入图片描述

  2. GET

    获取键或键范围

    格式:GET [options] [range_end]

    选项

    • hex – 将键和值打印为十六进制编码字符串
    • limit – 最大结果数
    • prefix – 通过匹配前缀获取键
    • order – 结果的顺序;上升或下降
    • sort-by – 排序目标;CREATE、KEY、MODIFY、VALUE 或 VERSION
    • rev – 指定 kv 版本
    • print-value-only – 与 write-out=simple 一起使用时只打印值
    • 一致性——Linearizable(l) 或 Serializable(s)
    • from-key – 使用字节比较获取大于或等于给定键的键
    • keys-only – 只获取密钥

    示例:etcdctl get /test --prefix(通过匹配前缀获取值)
    在这里插入图片描述

    示例:etcdctl get / --prefix --keys-only(只获取key)
    在这里插入图片描述
    注意:/registry/开头的就是kubernetes的键

    示例:etcdctl get /registry/pods/kube-system/etcd-minikube
    在这里插入图片描述

  3. DEL

    删除指定的键或键范围

    格式:DEL [options] [range_end]

    选项

    • prefix – 通过匹配前缀删除键
    • prev-kv – 返回已删除的键值对
    • from-key – 使用字节比较删除大于或等于给定键的键

    示例:etcdctl del foo
    在这里插入图片描述

    示例:etcdctl del --prefix /test
    在这里插入图片描述

    示例:etcdctl del --prev-kv foo
    在这里插入图片描述

  4. watch

    监视键或前缀上的事件流,命令一直运行,直到遇到错误或被用户终止

    格式:WATCH [options] [key or prefix] [range_end] [–] [exec-command arg1 arg2 …]

    选项

    • hex – 将键和值打印为十六进制编码字符串
    • interactive – 开始交互式观看会话
    • prefix – 如果设置了前缀,则监视前缀。
    • prev-kv – 获取事件发生前的前一个键值对。
    • rev - 开始观看的修订。指定修订对于观察过去的事件很有用

    示例:创建foo和删除foo
    在这里插入图片描述

  5. SNAPSHOT

    配置快照

    格式:SNAPSHOT

    子命令

    • save:创建快照
    • restore:恢复快照

    示例:etcdctl snapshot save bak.db
    在这里插入图片描述

    快照存储大小和查询数据库存储大小差不多
    在这里插入图片描述

    示例:etcdctl snapshot restore bak.db
    在这里插入图片描述

    这个命令3.6版本弃用,使用etcdutl命令替换

三、ETCD数据备份和恢复

3.1 备份数据

使用上面讲述的快照创建方法创建快照即可:etcdctl snapshot save bak.db

3.2 恢复数据

  • 停止etcd和apiserver服务
  • mv数据目录到其他目录下备份(kubeadm安装的容器etcd.yaml文件中可以找到数据目录路径)
  • 恢复快照:etcdctl snapshot restore bak.db --data-dir=xxx

参考:https://github.com/etcd-io/etcd/tree/main/etcdctl

------------------日常记录------------------

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值