kube-state-metrics暴露k8s中的监控指标

这篇具有很好参考价值的文章主要介绍了kube-state-metrics暴露k8s中的监控指标。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

kube-state-metrics 是一个用于从 Kubernetes 集群中生成各种资源对象状态指标的工具。

通过Deployment等配置完成安装

https://github.com/kubernetes/kube-state-metrics/tree/main/examples/standard
根据官方给定的配置添加至k8s上

注意需要RBAC授权

启动项

要使 kube-state-metrics 暴露更多的节点和 Pod 指标,可以在启动时设置以下参数:
kube-state-metrics 的完整启动参数包括:

  • –host:监听地址,默认0.0.0.0
  • –port:监听端口,默认8080
  • –telemetry-host: metrics 暴露地址,默认 0.0.0.0
  • –telemetry-port: metrics 暴露端口,默认 8081
  • –api-server: Kubernetes API server 地址
  • –kubeconfig: 指定 Kubernetes 配置文件
  • –namespace:监控的 namespace,默认监控全部
  • –collectors:启用的指标采集器,默认只启用基础指标
  • –kubelet-api:是否从 kubelet 获取指标,默认false
  • –kubelet-insecure-tls: 是否跳过 kubelet HTTPS 证书验证
  • –metrics-relist-interval:重新列表间隔,默认30s
  • –metrics-interval:指标采集间隔,默认30s
  • –version:打印版本信息

一个完整的启动命令可以是:

kube-state-metrics 
--kubelet-api --kubelet-insecure-tls  
--collectors=nodes,pods,resourcequota 
--telemetry-host=0.0.0.0 
--telemetry-port=8081

这个配置将开启直接抓取 kubelet 指标和更多采集器,并暴露 metrics 端点。
Prometheus 配置对应 job 抓取 kube-state-metrics 即可获取丰富的节点和 Pod 指标,如:文章来源地址https://www.toymoban.com/news/detail-623541.html

  • node_memory_usage_bytes
  • node_cpu_usage_seconds_total
  • container_memory_usage_bytes
  • container_cpu_usage_seconds_total

常见指标

pod
kube_pod_info # 有关pod的信息。
kube_pod_start_time # pod的unix时间戳记中的开始时间。
kube_pod_completion_time #pod的unix时间戳记中的完成时间。
kube_pod_labels # Kubernetes标签转换为Prometheus标签。
kube_pod_status_phase # Pod当前阶段。
kube_pod_status_ready # 描述容器是否准备好处理请求。
kube_pod_status_scheduled # 描述pod的调度过程的状态。
kube_pod_container_info # 有关容器中container的信息。
kube_pod_container_status_waiting # 描述容器当前是否处于等待状态。
kube_pod_container_status_waiting_reason # 描述容器当前处于等待状态的原因。
kube_pod_container_status_running # 描述容器当前是否处于运行状态。
kube_pod_container_status_terminated # 描述容器当前是否处于终止状态。
kube_pod_container_status_terminated_reason # 描述容器当前处于终止状态的原因。
kube_pod_container_status_last_terminated_reason # 描述容器处于终止状态的最后原因。
kube_pod_container_status_ready # Describes whether the containers readiness check succeeded.
kube_pod_container_status_restarts_total # 每个容器的容器重新启动次数。
kube_pod_container_resource_requests # 容器请求的请求资源数。
kube_pod_container_resource_limits # 容器请求的限制资源数量。
kube_pod_overhead # 额外资源开销,通常会衍生kube_pod_overhead_memory_bytes 与kube_pod_overhead_cpu_cores  
kube_pod_created # Unix创建时间戳。
kube_pod_deletion_timestamp # Unix删除时间戳
kube_pod_restart_policy # 描述此pod使用的重新启动策略。
kube_pod_init_container_info # 有关Pod中init容器的信息。
kube_pod_init_container_status_waiting # ,描述初始化容器当前是否处于等待状态。
kube_pod_init_container_status_waiting_reason # Describes the reason the init container is currently in waiting state.
kube_pod_init_container_status_running # 描述初始化容器当前是否处于运行状态。
kube_pod_init_container_status_terminated # 描述初始化容器当前是否处于终止状态。
kube_pod_init_container_status_terminated_reason # 描述初始化容器当前处于终止状态的原因。
kube_pod_init_container_status_last_terminated_reason # 描述初始化容器处于终止状态的最后原因。
kube_pod_init_container_status_ready # 描述初始化容器准备情况检查是否成功。
kube_pod_init_container_status_restarts_total  #Counter类型,初始化容器的重新启动次数。    
kube_pod_init_container_resource_limits # 初始化容器请求的限制资源数。
kube_pod_spec_volumes_persistentvolumeclaims_info # 有关Pod中持久卷声明卷的信息。
kube_pod_spec_volumes_persistentvolumeclaims_readonly # 描述是否以只读方式安装了持久卷声明。
kube_pod_status_reason # pod状态原因
kube_pod_status_scheduled_time # Pod移至计划状态时的Unix时间戳
kube_pod_status_unschedulable # 描述pod的unschedulable状态。

常用告警规则

pod
  - alert: KubernetesOutOfCapacity
    expr: sum by (node) ((kube_pod_status_phase{phase="Running"} == 1) + on(uid) group_left(node) (0 * kube_pod_info{pod_template_hash=""})) / sum by (node) (kube_node_status_allocatable{resource="pods"}) * 100 > 90
    for: 2m
    labels:
      severity: warning
      team: application
    annotations:
      summary: Kubernetes out of capacity
      description: "{{ $labels.node }} 容量不足\n  VALUE = {{ $value }}\n"

  - alert: KubernetesContainerOomKiller
    expr: (kube_pod_container_status_restarts_total - kube_pod_container_status_restarts_total offset 10m >= 1) and ignoring (reason) min_over_time(kube_pod_container_status_last_terminated_reason{reason="OOMKilled"}[10m]) == 1
    for: 0m
    labels:
      severity: warning
      team: application
    annotations:
      summary: Kubernetes container oom killer
      description: "Container {{ $labels.container }} in pod {{ $labels.namespace }}/{{ $labels.pod }} has been OOMKilled {{ $value }} times in the last 10 minutes.\n  VALUE = {{ $value }}\n"

到了这里,关于kube-state-metrics暴露k8s中的监控指标的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • k8s v1.27.4 部署metrics-serverv:0.6.4,kube-prometheus,镜像下载问题处理

    只有一个问题,原来的httpGet存活、就绪检测一直不通过,于是改为tcpSocket后pod正常。 修改后的yaml文件,镜像修改为阿里云 部署kube-prometheus 兼容1.27的为main分支 只克隆main分支 处理: 修改prometheus-clusterRole.yaml 使用ServiceMonitor添加监控: 以ingress-nginx为例 修改ingress-nginx.yaml的

    2024年02月05日
    浏览(32)
  • 通过kube-apiserver访问K8s集群中的App

    K8s集群中的App(或者svc),通常使用ClusterIP,NodePort,Loadbalancer这些方式访问,但是你也可以通过Kube-apiserver(管理面)来访问App。 在《跟唐老师学习云网络 - Kubernetes网络实现》里面,提到K8s集群里面的容器,有几种访问方法: LoadBalancer Ingress ClusterIP NodePort 这里就不再分析

    2024年01月19日
    浏览(36)
  • 【K8S系列】深入解析k8s 网络插件—kube-router

    做一件事并不难,难的是在于坚持。坚持一下也不难,难的是坚持到底。 文章标记颜色说明: 黄色 :重要标题 红色 :用来标记结论 绿色 :用来标记论点 蓝色 :用来标记论点 在现代容器化应用程序的世界中,容器编排平台Kubernetes已经成为标准。Kubernetes是一个分布式系统

    2024年02月08日
    浏览(28)
  • K8S暴露pod内多个端口

    公司统一用的某个底包跑jar服务,只暴露了8080端口  由于有些服务在启动jar服务后,会启动多个端口,除了8080端口,还有别的端口需要暴露,我这里就还需要暴露9999端口。 注:解决办法其实是可以直接改底包就好了,在底包中多暴露几个端口,但是我这边因为无法改底包,

    2024年02月14日
    浏览(29)
  • K8s暴露服务的三种方式

    在 Kubernetes 中,我们可以使用三种方式来暴露服务,以便外部应用程序可以访问它们。这些方式包括: NodePort NodePort 是 Kubernetes 中最简单的一种暴露服务的方式。它允许我们将容器端口映射到主机的某个端口上。这样,我们就可以通过主机的 IP 地址和该端口访问服务。Node

    2024年02月11日
    浏览(34)
  • k8s kube-proxy详解

    kube-proxy是kubernetes中网络核心组件,实现了服务暴露和转发等网络功能。kube-proxy支持userspace,ipvs和iptables三种代理模式。userspace性能问题较严重,基本不再使用,应用最多的是iptables和ipvs模式。 kube-proxy 以daemonset的方式运行在每个Node计算节点上,负责Pod网络代理, 它会定时通

    2024年02月10日
    浏览(49)
  • K8s暴露服务-服务发现(三种常用方式)

    NodePort:后期维护困难,不支持虚拟路径 LoadBlancer:需要云厂商支持,有局限性 ClusterIP:只能在集群内部访问 Ingress:灵活,无依赖 前三种方式都是在service的维度提供的,service的作用体现在两个方面,对集群内部它不断跟踪pod变化,更新endpoint中对应的pod的对象,提供IP不断变化

    2024年02月15日
    浏览(47)
  • 【k8s】:部署、使用 metrics-server

    💖The Begin💖点点关注,收藏不迷路💖 基于Kubernetes 集群,并已经安装并配置好 kubectl 工具。 Metrics Server 可以帮助我们监控集群中节点和容器的资源使用情况。 在本篇 CSDN 博客中,我将详细介绍如何部署 Metrics Server 到 Kubernetes 集群中。 工作流程说明: 1、用户执行 kubectl

    2024年04月16日
    浏览(47)
  • K8S之 metrics-server 组件(十八)

    首先下载:K8S之 metrics-server 组件                       metrics-server 是一个集群范围内的资源数据集和工具,同样的,metrics-server 也只是显示数据,并不提供数据存储服务,主要关注的是资源度量 API 的实现,比如 CPU、文件描述符、内存、请求延时等指标,metric-serv

    2024年02月11日
    浏览(32)
  • Kubernetes(k8s)当中安装并使用ingress暴露应用

    当我们使用不同类型的服务来暴露应用的时候会遇到一下问题: LoadBalancer :当我们在使用LoadBalancer类型的Service暴露服务的时候,一般都需要占用一个公网或者是内网IP地址。使用ingress我们就可以通过一个IP地址暴露多个服务。Ingress会根据客户端输入的不同的域名来确定我们

    2024年02月11日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包