【K8s 精选】CKA - 如何监视应用程序
资源监控的工具可以检测 Nodes、Pods、Service 等资源的统计信息。metric-service 提供的 API
metrics.k8s.io
仅能够监控 Node 和 Pod 的 CPU 和内存,而 Prometheus Adapter 提供 APIcustom.metrics.k8s.io
可以支持任意的 Prometheus 采集到的指标。
1.核心指标
Kubernetes 默认的 api-version,没有 metrics.k8s.io
和 external.metrics.k8s.io
分组。
$kubectl api-versions
admissionregistration.k8s.io/v1
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1
apiregistration.k8s.io/v1beta1
apps/v1
authentication.k8s.io/v1
authentication.k8s.io/v1beta1
authorization.k8s.io/v1
authorization.k8s.io/v1beta1
autoscaling/v1
autoscaling/v2beta1
autoscaling/v2beta2
batch/v1
batch/v1beta1
certificates.k8s.io/v1
certificates.k8s.io/v1beta1
coordination.k8s.io/v1
coordination.k8s.io/v1beta1
discovery.k8s.io/v1beta1
events.k8s.io/v1
events.k8s.io/v1beta1
extensions/v1beta1
flowcontrol.apiserver.k8s.io/v1beta1
networking.k8s.io/v1
networking.k8s.io/v1beta1
node.k8s.io/v1
node.k8s.io/v1beta1
policy/v1beta1
rbac.authorization.k8s.io/v1
rbac.authorization.k8s.io/v1beta1
scheduling.k8s.io/v1
scheduling.k8s.io/v1beta1
storage.k8s.io/v1
storage.k8s.io/v1beta1
v1
$kubectl top nodes
error: Metrics API not available
$kubectl top pods
error: Metrics API not available
可以参考如何部署 metrics-server,完成 metrics-server 的安装部署。
2.自定义指标
自定义指标 是由 Prometheus Adapter 提供的 API 分组 custom.metrics.k8s.io
,可支持任意 Prometheus 采集到的指标。
说明:k8s 不能直接解析 Prometheus 采集到的 metrics,因为两者数据格式不兼容,还需要另外一个组件 kube-state-metrics 把 Prometheus 的 metrics 数据格式转换成 k8s API 接口能识别的格式。同时由于自定义 API,还需要用 Kubernetes aggregator 在 API 服务器中注册,以便直接通过
/apis/
来访问。
Custom Metrics 的部署流程:
① 部署 Node-exporter 组件:Prometheus 的 Agent 端,采集 Node 级别的监控数据。
② 部署 Prometheus:服务端拉取 Node-exporter 数据并存储为时序数据。
③ 部署 kube-state-metrics: 将 Prometheus 数据转换成【Custom Metrics API】接口格式的数据。
④ 部署 k8s-prometheus-adpater:聚合 APIServer,即提供了一个 APIServer【Custom Metrics API】。
⑤ grafana:可视化 Prometheus 获取到的 metrics数据。