Skip to content

Instantly share code, notes, and snippets.

@superseb
Last active November 12, 2020 19:21
Show Gist options
  • Save superseb/4159825d9badc4907d4c8dcb722e0bd3 to your computer and use it in GitHub Desktop.
Save superseb/4159825d9badc4907d4c8dcb722e0bd3 to your computer and use it in GitHub Desktop.
Retrieve full-cluster-state from etcd directly

Retrieve full-cluster-state from etcd directly

etcdctl

docker exec -e ETCDCTL_ENDPOINTS=$(docker exec etcd /bin/sh -c "etcdctl member list | cut -d, -f5 | sed -e 's/ //g' | paste -sd ','") etcd etcdctl get /registry/configmaps/kube-system/full-cluster-state | tail -n1 | tr -c '[:print:]\t\r\n' '[ *]' | sed 's/^.*{"desiredState/{"desiredState/'  | docker run -i oildex/jq:1.6 jq -r . > cluster.rkestate 2>/dev/null

curl

  • /registry/configmaps/kube-system/full-cluster-state == base64: L3JlZ2lzdHJ5L2NvbmZpZ21hcHMva3ViZS1zeXN0ZW0vZnVsbC1jbHVzdGVyLXN0YXRl
docker run --rm -v $(docker inspect kubelet --format '{{ range .Mounts }}{{ if eq .Destination "/etc/kubernetes" }}{{ .Source }}{{ end }}{{ end }}')/ssl:/etc/kubernetes/ssl:ro --net=container:etcd appropriate/curl curl -s -X POST --cacert $(docker exec etcd printenv ETCDCTL_CACERT) --cert $(docker exec etcd printenv ETCDCTL_CERT) --key $(docker exec etcd printenv ETCDCTL_KEY) -d '{"key": "L3JlZ2lzdHJ5L2NvbmZpZ21hcHMva3ViZS1zeXN0ZW0vZnVsbC1jbHVzdGVyLXN0YXRl"}' $(docker exec etcd printenv ETCDCTL_ENDPOINTS)/v3/kv/range | docker run -i oildex/jq:1.6 jq -r '.kvs[].value | @base64d' | tail -n1 | sed 's/^.*{"desiredState/{"desiredState/' | docker run -i oildex/jq:1.6 jq -r . > cluster.rkestate 2>/dev/null
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment