資源監(jiān)控的工具可以檢測 Nodes、Pods顺又、Service 等資源的統(tǒng)計信息泣崩。metric-service 提供的 API
metrics.k8s.io
僅能夠監(jiān)控 Node 和 Pod 的 CPU 和內(nèi)存少梁,而 Prometheus Adapter 提供 APIcustom.metrics.k8s.io
可以支持任意的 Prometheus 采集到的指標(biāo)。
1.核心指標(biāo)
Kubernetes 默認(rèn)的 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.自定義指標(biāo)
自定義指標(biāo) 是由 Prometheus Adapter 提供的 API 分組 custom.metrics.k8s.io
妨马,可支持任意 Prometheus 采集到的指標(biāo)。
說明:k8s 不能直接解析 Prometheus 采集到的 metrics杀赢,因?yàn)閮烧邤?shù)據(jù)格式不兼容烘跺,還需要另外一個組件 kube-state-metrics 把 Prometheus 的 metrics 數(shù)據(jù)格式轉(zhuǎn)換成 k8s API 接口能識別的格式。同時由于自定義 API脂崔,還需要用 Kubernetes aggregator 在 API 服務(wù)器中注冊滤淳,以便直接通過
/apis/
來訪問。
Custom Metrics 的部署流程:
① 部署 Node-exporter 組件:Prometheus 的 Agent 端脱篙,采集 Node 級別的監(jiān)控數(shù)據(jù)娇钱。
② 部署 Prometheus:服務(wù)端拉取 Node-exporter 數(shù)據(jù)并存儲為時序數(shù)據(jù)伤柄。
③ 部署 kube-state-metrics: 將 Prometheus 數(shù)據(jù)轉(zhuǎn)換成【Custom Metrics API】接口格式的數(shù)據(jù)绊困。
④ 部署 k8s-prometheus-adpater:聚合 APIServer,即提供了一個 APIServer【Custom Metrics API】适刀。
⑤ grafana:可視化 Prometheus 獲取到的 metrics數(shù)據(jù)秤朗。