1.在master节点通过命令进入etcd容器,pod名称替换成自己的
[root@master ~]# kubectl get pods -n kuboard
NAME READY STATUS RESTARTS AGE
kuboard-etcd-6vmkm 1/1 Running 0 117m
kuboard-v3-7979bc788f-hzd8j 1/1 Running 0 106m
2.登录容器
kubectl -n kuboard exec -it kuboard-etcd-6vmkm sh
执行如下命令
# 端口自行查看 (不建议使用 127.0.0.1 使用 master 的网卡IP地址)
# 查看etcd的状态
# ETCDCTL_API=3 etcdctl --endpoints="192.168.1.108:2381" --write-out=table endpoint status
+--------------------+-----------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
| ENDPOINT | ID | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS |
+--------------------+-----------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
| 192.168.1.108:2381 | ee66422a43e3b8f | 3.4.16 | 20 kB | true | false | 6 | 862 | 862 | |
+--------------------+-----------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
# 可以看到error信息中有一条警告信息:alarm:NOSPACE
# 压缩旧版本
ETCDCTL_API=3 etcdctl --endpoints="192.168.1.108:2381" compact $(ETCDCTL_API=3 etcdctl --endpoints="192.168.1.108:2381" endpoint status --write-out="json" | egrep -o '"revision":[0-9]*' | egrep -o '[0-9].*')
# 整理多余的空间
ETCDCTL_API=3 etcdctl --endpoints="192.168.1.108:2381" defrag
# 取消告警信息(之前有nospace的告警)
ETCDCTL_API=3 etcdctl --endpoints="192.168.1.108:2381" alarm disarm
# 重新查看etcd的状态(发现ERROR字段已为空)
ETCDCTL_API=3 etcdctl --endpoints="192.168.1.108:2381" --write-out=table endpoint status
# ERROR信息为空,且DB SIZE 已小于2G则表示成功