etcdctl使用查询和备份
2021-05-24 本文已影响0人
哆啦A梦_ca52
使用etcdctl查询
前缀查询,获取目录
ETCDCTL_API=3 使用V3版本API
使用--prefix可以看到所有的子目录
使用--keys-only=true可以仅查看key
-w=json|python -m json.tool 使用json输出
因为集群内的etcd都是通过证书来访问,需要指定所需的证书文件
作者:wowshiwoniu
链接:https://www.jianshu.com/p/e428b6dba8e9
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
ETCDCTL_API=3 etcdctl --endpoints="https://127.0.0.1:2379" \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
get /registry/namespaces --prefix -w=json|python -m json.tool
输出如下
{
"count": 1,
"header": {
"cluster_id": 3062785408171499891,
"member_id": 10892522639324701955,
"raft_term": 3,
"revision": 2339318
},
"kvs": [
{
"create_revision": 146,
"key": "L3JlZ2lzdHJ5L25hbWVzcGFjZXMvZGVmYXVsdA==",
"mod_revision": 146,
"value": "azhzAAoPCgJ2MRIJTmFtZXNwYWNlEl8KRQoHZGVmYXVsdBIAGgAiACokMzNiZjg3NjUtNzU0Ni00OGVjLWEwNjUtMjg4OWJiMWIyMzdmMgA4AEIICKuo9vcFEAB6ABIMCgprdWJlcm5ldGVzGggKBkFjdGl2ZRoAIgA=",
"version": 1
}
]
}
可以看到key和value均是一串字符串,是base64加密过后的,若需要查看明文,可以通过简单的shell脚本来实现。这里只是简单的展示一下
$ echo -n "L3JlZ2lzdHJ5L25hbWVzcGFjZXMvZGVmYXVsdA==" | base64 -d
/registry/namespaces/default
备份
ETCDCTL_API=3 etcdctl --endpoints="https://127.0.0.1:2379" \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
snapshot save /tmp/etcd-snapshot-`date +%Y%m%d`.db
查看备份数据
etcdctl --endpoints="https://127.0.0.1:2379" --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key --cacert=/etc/kubernetes/pki/etcd/ca.crt --write-out=table snapshot status /tmp/etcd-snapshot-20210524.db
image.png
查看现在集群的状态
ETCDCTL_API=3 etcdctl --endpoints="https://127.0.0.1:2379" \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
endpoint status --write-out=table
image.png