我正在尝试获取ETCD度量标准,例如ETCD密钥的数量和大小,以及通过exec(ing)向kubernetes pod(etcdctl)向ETCD发出的请求的数量,并且不确定该使用什么命令。
另一种选择(例如cUrl)也将有所帮助。
谢谢您的帮助!
最佳答案
您需要从etcd中提取信息并过滤所需的内容。
为了说明,我将向您展示如何从etcd获取总密钥数。
# Getting etcd pod IP and set a local variable:
ADVERTISE_URL="https://$(kubectl get pods -n kube-system -l=component=etcd -o=jsonpath='{ .items[*].status.podIP }'):2379"
# Getting ectd pod name and set a variable ETCD_POD
ETCD_POD=$(kubectl get pods -n kube-system -l=component=etcd -o=jsonpath='{ .items[*].metadata.name}')
# Extracting all etcd keys/values to a file called "etcd-kv.json":
kubectl exec $ETCD_POD -n kube-system -- sh -c \
"ETCDCTL_API=3 etcdctl \
--endpoints $ADVERTISE_URL \
--cacert /etc/kubernetes/pki/etcd/ca.crt \
--key /etc/kubernetes/pki/etcd/server.key \
--cert /etc/kubernetes/pki/etcd/server.crt \
get \"\" --prefix=true -w json" > etcd-kv.json
现在,您已经拥有来自etcd的所有键/值对,您只需要进行过滤即可提取所需的信息。例如,要列出所有键,可以使用以下命令:
for k in $(cat etcd-kv.json | jq '.kvs[].key' | cut -d '"' -f2); do echo $k | base64 --decode; echo; done
并计算键的数量,只需在此命令的末尾使用
wc -l
命令即可,例如:for k in $(cat etcd-kv.json | jq '.kvs[].key' | cut -d '"' -f2); do echo $k | base64 --decode; echo; done | echo "Total keys=$(wc -l)"
Total keys=308
参考:
A closer look at etcd: The brain of a kubernetes cluster
关于kubernetes - 从etcdctl获取ETCD度量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61817806/