hello云胜

技术与生活

0%

K8s安装etcdctl客户端命令行工具

安装

下载工具包

1
wget https://github.com/etcd-io/etcd/releases/download/v3.4.14/etcd-v3.4.14-linux-amd64.tar.gz

解压并加入环境变量

1
2
tar -zxf etcd-v3.4.14-linux-amd64.tar.gz
mv etcd-v3.4.14-linux-amd64/etcdctl /usr/local/bin

验证etcdctl是否能用,出现以下结果代表已经成功了

1
2
3
[root@k8s-master1 ~]#etcdctl version
etcdctl version: 3.4.14
API version: 3.4
1
export ETCDCTL_API=3

查看etcd高可用集群健康状态

我们是通过sealos安装的k8s,sealos部署的etcd,需要去/etc/kubernetes/manifest/etcd.yml查找相关配置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
- --advertise-client-urls=https://1x.xxx.5.159:2379
- --cert-file=/etc/kubernetes/pki/etcd/server.crt
- --client-cert-auth=true
- --data-dir=/var/lib/etcd
- --initial-advertise-peer-urls=https://1x.xxx.5.159:2380
- --initial-cluster=k8s-master=https://1x.xxx.5.159:2380
- --key-file=/etc/kubernetes/pki/etcd/server.key
- --listen-client-urls=https://127.0.0.1:2379,https://1x.xxx.5.159:2379
- --listen-metrics-urls=http://127.0.0.1:2381
- --listen-peer-urls=https://1x.xxx.5.159:2380
- --name=k8s-master
- --peer-cert-file=/etc/kubernetes/pki/etcd/peer.crt
- --peer-client-cert-auth=true
- --peer-key-file=/etc/kubernetes/pki/etcd/peer.key
- --peer-trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt
- --snapshot-count=10000
- --trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt

需要的是

advertise-client-urls=https://1x.xxx.5.159:2379

cert-file=/etc/kubernetes/pki/etcd/server.crt

key-file=/etc/kubernetes/pki/etcd/server.key

trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt

1
2
3
4
5
6
[root@k8s-master1 ~]#etcdctl --endpoints=1x.xxx.5.159:2379  --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key --write-out=table endpoint health
+-------------------+--------+-------------+-------+
| ENDPOINT | HEALTH | TOOK | ERROR |
+-------------------+--------+-------------+-------+
| 1x.xxx.5.159:2379 | true | 6.827474ms | |
+-------------------+--------+-------------+-------+

多个endpoints用逗号隔开

查看etcd高可用集群列表

1
2
3
4
5
6
7
8
9
[root@k8s-master1 ~]#etcdctl --endpoints=1x.xxx.5.148:2379,1x.xxx.5.149:2379,1x.xxx.5.150:2379  --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key --write-out=table member list

+------------------+---------+-----------------+---------------------------+---------------------------+------------+
| ID | STATUS | NAME | PEER ADDRS | CLIENT ADDRS | IS LEARNER |
+------------------+---------+-----------------+---------------------------+---------------------------+------------+
| 4b3ac20594cafd80 | started | k8s-master-0002 | https://1x.xxx.5.149:2380 | https://1x.xxx.5.149:2379 | false |
| 5fbabc3223caea9c | started | k8s-master-0001 | https://1x.xxx.5.148:2380 | https://1x.xxx.5.148:2379 | false |
| 93ed7d06d0464add | started | k8s-master-0003 | https://1x.xxx.5.150:2380 | https://1x.xxx.5.150:2379 | false |

查看etcd高可用集群leader

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@k8s-master1 ~]#etcdctl --endpoints=1x.xxx.5.148:2379,1x.xxx.5.149:2379,1x.xxx.5.150:2379  --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key --write-out=table endpoint status



+-------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
| ENDPOINT | ID | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS |
+-------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
| 1x.xxx.5.148:2379 | 5fbabc3223caea9c | 3.4.3 | 32 MB | true | false | 4 | 1077958 | 1077958 | |
| 1x.xxx.5.149:2379 | 4b3ac20594cafd80 | 3.4.3 | 32 MB | false | false | 4 | 1077958 | 1077958 | |
| 1x.xxx.5.150:2379 | 93ed7d06d0464add | 3.4.3 | 32 MB | false | false | 4 | 1077958 | 1077958 | |
+-------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+


其他命令

etcdctl -h 查看

  • 获取 ETCD 所有的 key:

    1
    #etcdctl --endpoints=1x.xxx.5.159:2379  --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key  get / --prefix --keys-only