在 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
在 kubernetes-dashboard 官网下载 Metrics Server 的 YAML 文件:下载链接
在 Kubernetes 集群中执行以下命令安装 Metrics Server:
kubectl apply -f components.yaml
验证 Metrics Server 是否成功安装:
kubectl get apiservice v1beta1.metrics.k8s.io -o jsonpath='{.status.conditions[0].status}'`
如果输出的结果为
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 和内存使用量为例,可以使用以下命令:
kubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes" | jq .
其中 jq
是一个命令行工具,用于解析 JSON 数据格式。
监控指标数据
在 Kubernetes 集群中,可以通过 Prometheus 或 Grafana 等监控工具来实现集群指标数据的监控和可视化。
以下是使用 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