在 Kubernetes 中使用 Metrics Server 收集指标数据

阅读时长 11 分钟读完

在 Kubernetes 集群中,我们需要对集群的资源使用情况进行监控和管理。为了实现这个目标, Kubernetes 提供了 Metrics Server,它可以收集 Kubernetes 集群中各项指标数据并提供 API 服务,供其他组件或应用调用查询。本文将介绍如何安装和使用 Metrics Server 来收集集群的指标数据。

安装 Metrics Server

前置条件

在安装 Metrics Server 之前,确保你的 Kubernetes 集群满足以下要求:

  • Kubernetes 版本为 1.8 或以上
  • kubelet 启动参数中包含 --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP (可以通过 kubeadm init 命令中的 --node-ip 参数实现)
  • 启用了 kubelet 的 cadvisor 监控插件(kubelet 启动参数中包含 --cadvisor-port=<port>

安装 Metrics Server

  1. 在 kubernetes-dashboard 官网下载 Metrics Server 的 YAML 文件:下载链接

  2. 在 Kubernetes 集群中执行以下命令安装 Metrics Server:

  3. 验证 Metrics Server 是否成功安装:

    如果输出的结果为 True,则表示 Metrics Server 安装成功。

使用 Metrics Server

查看集群指标数据

在安装 Metrics Server 后,可以通过查看 API 来获取集群的指标数据。以下是一些 Metrics Server 支持的 API:

  • /apis/metrics.k8s.io/v1beta1/nodes:获取节点的 CPU 和内存使用量。
  • /apis/metrics.k8s.io/v1beta1/pods:获取 Pod 的 CPU 和内存占用量。
  • /apis/metrics.k8s.io/v1beta1/namespaces/{namespace}/pods/{pod}:获取特定 Namespace 和 Pod 的 CPU 和内存占用量。
  • /apis/metrics.k8s.io/v1beta1/nodes/{node}:获取特定节点的 CPU 和内存使用量。

以获取节点 CPU 和内存使用量为例,可以使用以下命令:

其中 jq 是一个命令行工具,用于解析 JSON 数据格式。

监控指标数据

在 Kubernetes 集群中,可以通过 PrometheusGrafana 等监控工具来实现集群指标数据的监控和可视化。

以下是使用 Prometheus 监控 Metrics Server 的指标数据的示例配置:

-- -------------------- ---- -------
-------
  ---------------- ---
  -------------------- ---

---------------
  - --------- ----------------------
    ----------------------
      - ----- ---
        -----------
          ------ ---------------
    ----------------
      - -------------- -------------------------------------------
        ---------- -
        ------ --------
        ------- ----
      - -------------- -----------------------------
        ---------- -
        ------ ------------
        ------- ----
      - -------------- ---------------------------------------------------- --------------------------------------
        ---------- -
        ------ ------------------------------------
        ------- ----
      - -------------- ------------- --------------------------------------------
        ---------- -
        ------ --------------
        ------------- -----------
        ------------ --------------------------
        ------- -------

  - --------- ------------------
    ----------------------
      - ----- ----
    ----------------
      - -------------- -----------------------------------------------------
        ---------- -
        ------ -----
        ------------- ------
        ------------ --
        ------- -------
      - ---------- -
        ------ --
        ------------- ----------------
        ------------ ----------------------------------
        ------- -------
      - -------------- -------------
        ---------- -
        ------ ----
        ------------- --------------
        ------------ --
        ------- -------
      - ---------- -
        ------ ----
        ------------- --------
        ------------ --
        ------- -------
      - -------------- ----------------
        ---------- -
        ------ ----
        ------------- -----------
        ------------ --------------------------
        ------- -------

  - --------- -----------------
    ----------------------
      - ----- ---
        -----------
          ------ ---------------
    ----------------
      - -------------- -------------------------------------------
        ---------- -
        ------ --------
        ------- ----
      - -------------- -----------------------------
        ---------- -
        ------ ------------
        ------- ----
      - -------------- ----------------------------------------------------
        ---------- -
        ------ ---------------------
        ------- ----
      - -------------- ----------------------------
        ---------- -
        ------ -----
        ------------- --------
        ------------ --
        ------- -------
      - ---------- -
        ------ --
        ------------- ----------------
        ------------ ---------------------------------
        ------- -------
      - -------------- -------------
        ---------- -
        ------ ----
        ------------- --------------
        ------------ --
        ------- -------
      - ---------- -
        ------ ----
        ------------- --------
        ------------ --
        ------- -------
      - -------------- -------------------
        ---------- -
        ------ ----
        ------------- ---------
        ------------ --
        ------- -------
      - -------------- -------------
        ---------- -
        ------ ----
        ------------- --------
        ------------ --
        ------- -------
      - -------------- -------------------
        ---------- -
        ------ ----
        ------------- --------------
        ------------ --
        ------- -------
      - -------------- ------------------------
        ---------- -
        ------ ----
        ------------- --------------
        ------------ --
        ------- -------
      - -------------- ----------------
        ---------- -
        ------ ----
        ------------- ------
        ------------ --
        ------- -------
      - -------------- -----------------------------------------------------
        ---------- -
        ------ ---------
        ------------- --------------
        ------------ --
        ------- -------
      - -------------- -------------
        ---------- -
        ------ ----
        ------------- -----------
        ------------ --------------------------
        ------- -------

在 Prometheus 的配置文件中通过注入 job,可以轻松地监控 Metrics Server 数据。示例配置中提供了 3 个监控 job:

  • kubernetes-apiserver:监控 Kubernetes API Server 的调用并提供 API 响应时间。
  • kubernetes-nodes:监控 Kubernetes 节点的 CPU 和内存使用量。
  • kubernetes-pods:监控 Kubernetes Pod 的 CPU 和内存占用量。

以上配置中的 kubernetes.default.svc:443 需要根据集群实际情况设定。

结论

Metrics Server 是 Kubernetes 内置的一款数据收集器。安装 Metrics Server 后,你可以通过 API 查看集群数据。在结合 Prometheus 或 Grafana 等工具一起使用时,可以监控 Kubernetes 集群的各种数据,并实现数据的可视化和告警。通过本文提供的示例代码和配置,你可以方便地开始使用 Metrics Server 来管理和监控你的 Kubernetes 集群。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/670c8065759e058cdf32ca0d

纠错
反馈