【问题标题】:Getting ETCD Metrics from etcdctl从 etcdctl 获取 ETCD 指标
【发布时间】:2020-09-01 04:40:18
【问题描述】:

我正在尝试获取 ETCD 指标,例如 ETCD 密钥的数量和大小,以及通过 exec (ing) 到 kubernetes pod (etcdctl) 中向 ETCD 发出的请求数量,但我不确定为此使用什么命令.

另一种选择(例如 cUrl)也会有所帮助。

感谢您的帮助!

【问题讨论】:

    标签: kubernetes etcd etcdctl


    【解决方案1】:

    您需要从 etcd 中提取信息并过滤您想要的内容。 为了说明,我将向您展示如何从 etcd 中获取总键数。

    注意:在 kubernetes 1.18.2 中测试。

    # 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-29
      • 2023-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-09
      • 2019-10-14
      • 1970-01-01
      相关资源
      最近更新 更多