Metrics

    • Metrics API 只可以查询当前的度量数据,并不保存历史数据
    • Metrics API URI 为 ,在 k8s.io/metrics 维护

    由以下两部分组成:

    • 核心度量流程(下图黑色部分):这是 Kubernetes 正常工作所需要的核心度量,从 Kubelet、cAdvisor 等获取度量数据,再由 metrics-server 提供给 Dashboard、HPA 控制器等使用。
    • 监控流程(下图蓝色部分):基于核心度量构建的监控流程,比如 Prometheus 可以从 metrics-server 获取核心度量,从其他数据源(如 Node Exporter 等)获取非核心度量,再基于它们构建监控告警系统。

    开启API Aggregation

    如果kube-proxy没有在Master上面运行,还需要配置

    1. --enable-aggregator-routing=true

    稍后就可以看到 metrics-server 运行起来:

    1. kubectl -n kube-system get pods -l k8s-app=metrics-server

    Metrics API

    • http://127.0.0.1:8001/apis/metrics.k8s.io/v1beta1/nodes/<node-name>
    • http://127.0.0.1:8001/apis/metrics.k8s.io/v1beta1/pods
    • http://127.0.0.1:8001/apis/metrics.k8s.io/v1beta1/namespace/<namespace-name>/pods/<pod-name>

    也可以直接通过 kubectl 命令来访问这些 API,比如

    • kubectl get --raw /apis/metrics.k8s.io/v1beta1/nodes/<node-name>
    • kubectl get --raw /apis/metrics.k8s.io/v1beta1/namespace/<namespace-name>/pods/<pod-name>

    如果发现 metrics-server Pod 无法正常启动,比如处于 CrashLoopBackOff 状态,并且 restartCount 在不停增加,则很有可能是其跟 kube-apiserver 通信有问题。查看该 Pod 的日志,可以发现

    1. echo "ExecStartPost=/sbin/iptables -P FORWARD ACCEPT" >> /etc/systemd/system/docker.service.d/exec_start.conf
    2. systemctl daemon-reload

    参考文档