安装 etcd-client
| 1
 | $ sudo apt install -y etcd-client
 | 
 
得到元信息
利用 docker ps 找到 k8s 的 etcd 容器:
| 1
2
3
4
 | $ docker ps
...
72921b78c9c4   rancher/mirrored-coreos-etcd:v3.4.15-rancher1   "/usr/local/bin/etcd…"   19 months ago    Up 5 months               etcd
...
 | 
 
利用 docker inspect 观察这个容器的配置元信息:
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 | $ docker inspect etcd
...
            "Env": [
                "ETCDCTL_API=3",
                "ETCDCTL_CACERT=/etc/kubernetes/ssl/kube-ca.pem",
                "ETCDCTL_CERT=/etc/kubernetes/ssl/kube-etcd-172-18-10-1.pem",
                "ETCDCTL_KEY=/etc/kubernetes/ssl/kube-etcd-172-18-10-1-key.pem",
                "ETCDCTL_ENDPOINTS=https://127.0.0.1:2379",
                "ETCD_UNSUPPORTED_ARCH=x86_64",
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
...
 | 
 
可以发现它使用的 V3 版本的 API,且告诉了你 CA 证书,证书,私钥的文件位置,以及端口。
命令模板
| 1
2
3
4
5
6
 | $ sudo ETCDCTL_API=3 etcdctl \
--endpoints 127.0.0.1:2379 \
--cacert <上面的 ETCDCTL_CACERT> \
--cert <上面的 ETCDCTL_CERT> \
--key <上面的 ETCDCTL_KEY> \
<etcd 命令>
 | 
 
常见命令
help:
| 1
2
 | $ ETCDCTL_API=3 etcdctl help
$ ETCDCTL_API=3 etcdctl <命令> -h
 | 
 
列出集群节点:
| 1
2
3
4
 | $ <模板> member list
1a51951451665d46, started, etcd-xxx, https://xxx:2380, https://xxx:2379
5611b18ab33e296b, started, etcd-yyy, https://yyy:2380, https://yyy:2379
c190e474054c0acf, started, etcd-zzz, https://zzz:2380, https://yyy:2379
 | 
 
列出所有 key:
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
 | $ <模板> get --keys-only --prefix ""
/registry/apiextensions.k8s.io/customresourcedefinitions/nodedrivers.management.cattle.io
/registry/services/specs/cattle-system/rancher
/registry/services/specs/cattle-system/rancher-webhook
/registry/services/specs/default/kubernetes
/registry/services/specs/fleet-system/gitjob
...
 | 
 
得到某个 key 的值:
| 1
2
3
 | $ <模板> get <key>
...
 | 
 
V2 版本
如果是 V2 版本的 API,则是这样:
| 1
2
3
4
5
6
 | sudo etcdctl \
--endpoints http://127.0.0.1:2379 \
--ca-file <上面的 ETCDCTL_CACERT> \
--cert-file <上面的 ETCDCTL_CERT> \
--key-file <上面的 ETCDCTL_KEY> \
<etcd 命令>
 | 
 
评论