0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

解析Kubernetes监控指标获取方式对比

马哥Linux运维 来源:掘金 作者:Honest1y 2021-09-26 10:45 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

对比

node-exporter用于采集服务器层面的运行指标,包括机器的loadavg、filesystem、meminfo等基础监控,类似于传统主机监控维度的zabbix-agent。 metric-server/heapster是从api-server中获取CPU、内存使用率这种监控指标,并把他们发送给存储后端,如InfluxDB或云厂商,他当前的核心作用是:为HPA等组件提供决策指标支持。 kube-state-metrics关注于获取Kubernetes各种资源的最新状态,如Deployment或者DaemonSet。 例如:
  • 我调度了多少个Replicas?现在可用的有几个?

  • 多少个Pod是running/stopped/terminated状态?

  • Pod重启了多少次?

  • 我有多少job在运行中?

这些指标都由kube-state-metrics提供。 之所以没有把kube-state-metrics纳入到metric-server的能力中,是因为他们的关注点本质上是不一样的。
  • metric-server仅仅是获取、格式化现有数据,写入特定的存储,实质上是一个监控系统。

  • kube-state-metrics是将Kubernetes的运行状况在内存中做了个快照,并且获取新的指标,但他没有能力导出这些指标。
    部署metric-server

下载metric-server部署的yaml文件到本地。

	

wgethttps://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.7/components.yaml

拉取metric-server的镜像到本地:

	

#dockerpullzhaoqinchang/metrics-server:0.3.7 0.3.7:Pullingfromzhaoqinchang/metrics-server 9ff2acc3204b:Pullcomplete 9d14b55ff9a0:Pullcomplete Digest:sha256:c0efe772bb9e5c289db6cc4bc2002c268507d0226f2a3815f7213e00261c38e9 Status:Downloadednewerimageforzhaoqinchang/metrics-server:0.3.7 docker.io/zhaoqinchang/metrics-server:0.3.7

修改components.yaml文件为如下内容:

	#catcomponents.yaml --- apiVersion:rbac.authorization.k8s.io/v1 kind:ClusterRole metadata: name:system:aggregated-metrics-reader labels: rbac.authorization.k8s.io/aggregate-to-view:"true" rbac.authorization.k8s.io/aggregate-to-edit:"true" rbac.authorization.k8s.io/aggregate-to-admin:"true" rules: -apiGroups:["metrics.k8s.io"] resources:["pods","nodes"] verbs:["get","list","watch"] --- apiVersion:rbac.authorization.k8s.io/v1 kind:ClusterRoleBinding metadata: name:metrics-serverauth-delegator roleRef: apiGroup:rbac.authorization.k8s.io kind:ClusterRole name:system:auth-delegator subjects: -kind:ServiceAccount name:metrics-server namespace:kube-system --- apiVersion:rbac.authorization.k8s.io/v1 kind:RoleBinding metadata: name:metrics-server-auth-reader namespace:kube-system roleRef: apiGroup:rbac.authorization.k8s.io kind:Role name:extension-apiserver-authentication-reader subjects: -kind:ServiceAccount name:metrics-server namespace:kube-system --- apiVersion:apiregistration.k8s.io/v1beta1 kind:APIService metadata: name:v1beta1.metrics.k8s.io spec: service: name:metrics-server namespace:kube-system group:metrics.k8s.io version:v1beta1 insecureSkipTLSVerify:true groupPriorityMinimum:100 versionPriority:100 --- apiVersion:v1 kind:ServiceAccount metadata: name:metrics-server namespace:kube-system --- apiVersion:apps/v1 kind:Deployment metadata: name:metrics-server namespace:kube-system labels: k8s-app:metrics-server spec: selector: matchLabels: k8s-app:metrics-server template: metadata: name:metrics-server labels: k8s-app:metrics-server spec: serviceAccountName:metrics-server volumes: #mountintmpsowecansafelyusefrom-scratchimagesand/orread-onlycontainers -name:tmp-dir emptyDir:{} containers: -name:metrics-server image:zhaoqinchang/metrics-server:0.3.7#修改镜像为刚刚拉取下来的镜像 imagePullPolicy:IfNotPresent args: ---cert-dir=/tmp ---secure-port=4443 command:#添加以下三行command命令 -/metrics-server ---kubelet-preferred-address-types=InternalIP ---kubelet-insecure-tls ports: -name:main-port containerPort:4443 protocol:TCP securityContext: readOnlyRootFilesystem:true runAsNonRoot:true runAsUser:1000 volumeMounts: -name:tmp-dir mountPath:/tmp nodeSelector: kubernetes.io/os:linux --- apiVersion:v1 kind:Service metadata: name:metrics-server namespace:kube-system labels: kubernetes.io/name:"Metrics-server" kubernetes.io/cluster-service:"true" spec: selector: k8s-app:metrics-server ports: -port:443 protocol:TCP targetPort:main-port --- apiVersion:rbac.authorization.k8s.io/v1 kind:ClusterRole metadata: name:system:metrics-server rules: -apiGroups: -"" resources: -pods -nodes -nodes/stats -namespaces -configmaps verbs: -get -list -watch --- apiVersion:rbac.authorization.k8s.io/v1 kind:ClusterRoleBinding metadata: name:system:metrics-server roleRef: apiGroup:rbac.authorization.k8s.io kind:ClusterRole name:system:metrics-server subjects: -kind:ServiceAccount name:metrics-server namespace:kube-system
				部署metric-server:

	

#kubectlapply-fcomponents.yaml clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-readercreated clusterrolebinding.rbac.authorization.k8s.io/metrics-serverauth-delegatorcreated rolebinding.rbac.authorization.k8s.io/metrics-server-auth-readercreated apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.iocreated serviceaccount/metrics-servercreated deployment.apps/metrics-servercreated service/metrics-servercreated clusterrole.rbac.authorization.k8s.io/system:metrics-servercreated clusterrolebinding.rbac.authorization.k8s.io/system:metrics-servercreated

查看metric.k8s.io是否出现在Kubernetes集群的API群组列表中:

	

#kubectlapi-versions|grepmetrics metrics.k8s.io/v1beta1

使用

kubectl top命令可显示节点和Pod对象的资源使用信息,它依赖于集群中的资源指标API来收集各项指标数据。它包含有Node和Pod两个子命令,可分别显示Node对象和Pod对象的相关资源占用率。 列出Node资源占用率命令的语法格式为“kubectl top node [-l label | NAME]”,例如下面显示所有节点的资源占用状况的结果中显示了各节点累计CPU资源占用时长及百分比,以及内容空间占用量及占用比例。必要时,也可以在命令直接给出要查看的特定节点的标识,以及使用标签选择器进行节点过滤。

	

[root@mastermetric]#kubectltopnodes NAMECPU(cores)CPU%MEMORY(bytes)MEMORY% master282m14%1902Mi51% node-0270m3%1371Mi37% node-03121m1%892Mi11%

而名称空间级别的Pod对象资源占用率的使用方法会略有不同,使用时,一般应该跟定名称空间及使用标签选择器过滤出目标Pod对象。例如,下面显示kube-system名称空间下的Pod资源使用状况:

	

[root@mastermetric]#kubectltoppods-nkube-system NAMECPU(cores)MEMORY(bytes) etcd-master32m300Mi kube-apiserver-master86m342Mi kube-controller-manager-master30m48Mi kube-flannel-ds-l5ghn5m10Mi kube-flannel-ds-rqlm24m12Mi kube-flannel-ds-v92r94m14Mi kube-proxy-7vjcv18m15Mi kube-proxy-xrz8f13m21Mi kube-proxy-zpwn61m14Mi kube-scheduler-master7m17Mi metrics-server-5549c7694f-7vb662m14Mi

kubectl top命令为用户提供简洁、快速获取Node对象及Pod对象系统资源占用状况的接口,是集群运行和维护的常用命令之一。 原文链接:https://juejin.cn/post/6996862439560052773
编辑:jq
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    11218

    浏览量

    222953
  • 服务器
    +关注

    关注

    13

    文章

    10093

    浏览量

    90888
  • API
    API
    +关注

    关注

    2

    文章

    2153

    浏览量

    66241
  • 机器
    +关注

    关注

    0

    文章

    796

    浏览量

    41774

原文标题:Kubernetes监控指标获取方式对比

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    京东平台获取商品详情原数据API接口技术解析

    ​  在电商系统开发、价格监控、竞品分析等场景中,获取商品的原始详情数据是基础且关键的一环。京东作为国内领先的电商平台,提供了相应的API接口供开发者调用。本文将介绍如何使用京东开放平台的API接口
    的头像 发表于 11-13 14:35 306次阅读
    京东平台<b class='flag-5'>获取</b>商品详情原数据API接口技术<b class='flag-5'>解析</b>

    深入解析:如何通过接口获取拼多多商品详情数据

    ​  引言 在电商数据分析和第三方应用开发中,获取商品详情信息是基础且关键的一环。对于拼多多这个国内主流电商平台,开发者们常关注其商品数据的获取方式。本文将探讨获取拼多多商品详情的几种
    的头像 发表于 11-10 15:15 246次阅读
    深入<b class='flag-5'>解析</b>:如何通过接口<b class='flag-5'>获取</b>拼多多商品详情数据

    香港服务器支持Docker和Kubernetes吗?

    Kubernetes的部署与运行? 答案是肯定的,而且香港服务器由于其独特的优势,往往是部署容器化应用的绝佳选择。 下面,我们将从技术支持、网络优势、实践指南和注意事项等方面,全面解析香港服务器与云原生技术的完美契合度。 一、核心技术支持:坚如磐石的基
    的头像 发表于 10-21 15:47 373次阅读

    亚马逊 MWS API 实战:商品详情精准获取与跨境电商数据整合方案

    本文详细解析亚马逊MWS API接口的技术实现,重点解决跨境商品数据获取中的核心问题。文章首先介绍MWS接口体系的特点,包括多站点数据获取、AWS签名认证等关键环节,并对比普通电商接口
    的头像 发表于 09-22 10:05 414次阅读
    亚马逊 MWS API 实战:商品详情精准<b class='flag-5'>获取</b>与跨境电商数据整合方案

    Zabbix与Prometheus运维监控系统的对比

    在当今云原生和微服务架构盛行的时代,监控系统已成为运维工程师不可或缺的核心工具。面对市场上众多监控解决方案,Zabbix和Prometheus作为两大主流选择,各自拥有独特的优势和适用场景。本文将从架构设计、性能表现、功能特性、运维成本等多个维度进行深入
    的头像 发表于 09-18 14:57 383次阅读

    基于eBPF的Kubernetes网络异常检测系统

    作为一名在云原生领域深耕多年的运维工程师,我见过太多因为网络问题导致的生产事故。传统的监控手段往往是事后诸葛亮,当你发现问题时,用户已经在抱怨了。今天,我将分享如何利用 eBPF 这一革命性技术,构建一套能够实时检测 Kubernetes 网络异常的系统。
    的头像 发表于 07-24 14:09 500次阅读

    数字功放的崛起;技术优势与产品对比解析

    数字功放的崛起;技术优势与产品对比解析
    的头像 发表于 07-18 17:59 775次阅读
    数字功放的崛起;技术优势与产品<b class='flag-5'>对比</b><b class='flag-5'>解析</b>

    如何评估协议分析仪的性能指标

    评估协议分析仪的性能指标需从硬件处理能力、协议解析精度、实时响应效率、扩展性与兼容性、用户体验五大维度综合考量。以下是具体指标及评估方法,结合实际场景说明其重要性:一、硬件处理能力:决定基础性
    发表于 07-18 14:44

    生产环境中Kubernetes容器安全的最佳实践

    随着容器化技术的快速发展,Kubernetes已成为企业级容器编排的首选平台。然而,在享受Kubernetes带来的便利性和可扩展性的同时,安全问题也日益凸显。本文将从运维工程师的角度,深入探讨生产环境中Kubernetes容器
    的头像 发表于 07-14 11:09 492次阅读

    网络化多电机伺服系统监控终端设计

    信息,并计算系统各项性能指标。实验结果表明,系统响应速度快、运行稳定,可靠性高。 纯分享帖,需要者可点击附件免费获取完整资料~~~*附件:网络化多电机伺服系统监控终端设计.pdf【免责声明】本文系网络转载,版权归原作者所有。本文
    发表于 06-23 07:15

    Kubernetes Helm入门指南

    Helm 是 Kubernetes 的包管理工具,它允许开发者和系统管理员通过定义、打包和部署应用程序来简化 Kubernetes 应用的管理工作。Helm 的出现是为了解决在 Kubernetes
    的头像 发表于 04-30 13:42 2900次阅读
    <b class='flag-5'>Kubernetes</b> Helm入门指南

    使用Prometheus与Grafana实现MindIE服务可视化监控功能

    在 MindIE 服务化运行过程中,为了及时掌握服务的运行状态、性能表现以及发现潜在问题,提供了服务监控指标查询接口(普罗 (Prometheus) 格式)。该接口能够帮助开发者和运维人员获取丰富的服务
    的头像 发表于 04-21 11:48 1860次阅读
    使用Prometheus与Grafana实现MindIE服务可视化<b class='flag-5'>监控</b>功能

    Kubernetes中部署MySQL集群

    一般情况下 Kubernetes 可以通过 ReplicaSet 以一个 Pod 模板创建多个 pod 副本,但是它们都是无状态的,任何时候它们都可以被一个全新的 pod 替换。
    的头像 发表于 03-18 16:22 618次阅读
    <b class='flag-5'>Kubernetes</b>中部署MySQL集群

    Kubernetes包管理工具Helm的安装和使用

    Helm 可以帮助我们管理 Kubernetes 应用程序 - Helm Charts 可以定义、安装和升级复杂的 Kubernetes 应用程序,Charts 包很容易创建、版本管理、分享和分布。
    的头像 发表于 03-13 16:06 1923次阅读

    Kubernetes Pod常用管理命令详解

    Kubernetes Pod常用管理命令详解
    的头像 发表于 02-17 14:06 990次阅读
    <b class='flag-5'>Kubernetes</b> Pod常用管理命令详解