People say nothing is impossible, but I do nothing every day.

First real blog post, and what better way to start it with some kube-prometheus-stacking.

Version 39.4.1 added some new rules and after upgrading I immediately started getting alerts for etcdDatabaseHighFragmentationRatio, oh no! What shall one do? Off to Google to find an answer!

I came across this gist which provided some insights into what steps to take.

On one of your master nodes create etcdctl-install.sh and chmod +x it.

   #!/usr/bin/env bash
   set -eux
   etcd_version=v3.5.3
   case "$(uname -m)" in
       aarch64) arch="arm64" ;;
       x86_64) arch="amd64" ;;
   esac;
   etcd_name="etcd-${etcd_version}-linux-${arch}"
   curl -sSfL "https://github.com/etcd-io/etcd/releases/download/${etcd_version}/${etcd_name}.tar.gz" 
   | tar xzvf - -C /usr/local/bin --strip-components=1 "${etcd_name}/etcdctl"

Run the script

   ./etcdctl-install.sh

Export etcd variables that etcdctl needs to talk to the cluster

   export ETCDCTL_ENDPOINTS="https://127.0.0.1:2379"
   export ETCDCTL_CACERT="/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt"
   export ETCDCTL_CERT="/var/lib/rancher/k3s/server/tls/etcd/server-client.crt"
   export ETCDCTL_KEY="/var/lib/rancher/k3s/server/tls/etcd/server-client.key"
   export ETCDCTL_API=3

defrag

   etcdctl defrag --cluster

Confirm output

   Finished defragmenting etcd member[https://192.168.42.10:2379]
   Finished defragmenting etcd member[https://192.168.42.12:2379]
   Finished defragmenting etcd member[https://192.168.42.11:2379]

After that the alerts should clear up!