etcdctl使用查询和备份

使用etcdctl查询

前缀查询,获取目录

ETCDCTL_API=3 使用V3版本API
使用--prefix可以看到所有的子目录
使用--keys-only=true可以仅查看key
-w=json|python -m json.tool 使用json输出

因为集群内的etcd都是通过证书来访问,需要指定所需的证书文件

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使用查询和备份)