k8s集群安装dashboard之后,会显示每个namespace的workload状态,如何使用proemtheus获取到这个workload状态?
时间: 2024-03-06 14:47:55 浏览: 59
k8s部署Dashboard
要使用 Prometheus 监控 Kubernetes 集群中的工作负载状态,可以使用 Kubernetes 的 Metrics API。通过 Metrics API,Prometheus 可以获取 Kubernetes API 中每个对象的指标数据,包括工作负载的状态。
首先需要确保 Kubernetes 集群已经启用 Metrics API。在 Kubernetes 1.8 及以上版本中,Metrics API 默认是启用的。可以使用以下命令检查 Metrics API 是否已经启用:
```bash
kubectl api-versions | grep metrics
```
如果输出中包含 `metrics.k8s.io/v1beta1`,则表示 Metrics API 已经启用。
接下来,需要配置 Prometheus 以获取 Metrics API 的数据。可以使用以下配置:
```
- job_name: 'kubernetes-pods'
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_pod_container_name]
action: keep
regex: '.*'
- source_labels: [__meta_kubernetes_namespace]
action: replace
target_label: kubernetes_namespace
- source_labels: [__meta_kubernetes_pod_name]
action: replace
target_label: kubernetes_pod_name
```
这个配置使用 Kubernetes SD(Service Discovery)机制,自动发现 Kubernetes 中的 Pod。然后,使用 relabel_configs 将 Pod 的标签转换为 Prometheus 标签格式。
最后,可以通过以下方式获取工作负载的状态:
```
sum(kube_pod_status_phase{phase=~"Running|Pending|Succeeded"} == 1) by (namespace, deployment)
```
这个查询语句会返回每个命名空间中每个 Deployment 的运行状态。其中,`kube_pod_status_phase` 是 Metrics API 中的一个指标,表示 Pod 的状态。`sum` 函数将每个 Pod 的状态相加,得到每个 Deployment 的状态。`phase=~"Running|Pending|Succeeded"` 条件过滤器表示只统计正在运行、挂起或已完成的 Pod。`by (namespace, deployment)` 表示按照命名空间和 Deployment 分组统计。
阅读全文