# RKE & RKE2 etcd Compact the Keyspace and Defrag All etcd * `etcdctl compact` 和 `etcdctl defrag` 這兩個指令是可以隨時執行的,不過建議是定期執行就可以了,不用頻繁執行。 1. rke 使用方式 ``` # Compact the Keyspace 壓縮所有舊的修訂 $ rev=$(docker exec etcd etcdctl endpoint status --write-out json | egrep -o '"revision":[0-9]*' | egrep -o '[0-9]*') $ docker exec etcd etcdctl compact "$rev" ``` ``` # Defrag All etcd $ docker exec etcd etcdctl defrag --cluster ``` 2. rke2 使用方式 ``` $ eval $(kubectl get nodes -owide|grep -E "etcd|control-plane" |awk '{printf "https://"$6":2379,"}'|awk '{gsub(",$","");print "export ETCDCTL_ENDPOINTS=\""$1"\""}') && export ETCDCTL_CACERT=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt && export ETCDCTL_CERT=/var/lib/rancher/rke2/server/tls/etcd/server-client.crt && export ETCDCTL_KEY=/var/lib/rancher/rke2/server/tls/etcd/server-client.key # Compact the Keyspace 壓縮所有舊的修訂 $ rev=$(ETCDCTL_ENDPOINTS='https://127.0.0.1:2379' etcdctl endpoint status --write-out="json" | egrep -o '"revision":[0-9]*' | egrep -o '[0-9].*') $ ETCDCTL_API=3 etcdctl compact $rev ``` ``` # Defrag All etcd $ ETCDCTL_API=3 etcdctl defrag --cluster ```