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

    文章

    10798

    浏览量

    210708
  • 服务器
    +关注

    关注

    12

    文章

    8933

    浏览量

    85049
  • API
    API
    +关注

    关注

    2

    文章

    1470

    浏览量

    61735
  • 机器
    +关注

    关注

    0

    文章

    774

    浏览量

    40667

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

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

收藏 人收藏

    评论

    相关推荐

    ZCAN PRO解析的DBC Singal 起始位与XNET解析的起始位不同;解析的信号不符合大端逻辑

    上图中的DBC文件使用记事本打开,Data_Field信号,起始位为23,长度为48,大端方式存储;(按照这个方式存储,明显已经溢出) 上图为该信号在ZCANPRO软件中打开,解析的起始位为23
    发表于 10-18 13:53

    使用Velero备份Kubernetes集群

    Velero 是 heptio 团队(被 VMWare 收购)开源的 Kubernetes 集群备份、迁移工具。
    的头像 发表于 08-05 15:43 306次阅读
    使用Velero备份<b class='flag-5'>Kubernetes</b>集群

    如何使用Kubeadm命令在PetaExpress Ubuntu系统上安装Kubernetes集群

    Kubernetes,通常缩写为K8s,是一个开源的容器编排平台,旨在自动化容器化应用的部署、扩展和管理。有了Kubernetes,您可以轻松地部署、更新和扩展应用,而无需担心底层基础设施。
    的头像 发表于 07-15 13:31 788次阅读
    如何使用Kubeadm命令在PetaExpress Ubuntu系统上安装<b class='flag-5'>Kubernetes</b>集群

    esp32在静态IP下,域名无法解析怎么解决?

    1esp32使用dhcp,正常获取IP连接网络,可以解析域名. 2esp32使用静态IP,正常获取IP连接网络,无法解析域名。
    发表于 06-25 07:56

    【米尔-全志T113-i开发板试用】3、使用golang获取系统信息

    获取系统信息,我们可以使用Linux的Proc文件系统,解析其中的文件来取得相应的信息,但是那样做太麻烦了,需要找很多资料,写挺多的代码。 我们可以使用现成的工具gopsutil。gopsutil
    发表于 02-22 09:39

    Prometheus监控业务指标详解

    Kubernetes 已经成了事实上的容器编排标准之下,微服务的部署变得非常容易。但随着微服务规模的扩大,服务治理带来的挑战也会越来越大。在这样的背景下出现了服务可观测性(observability)的概念。
    的头像 发表于 01-24 10:32 516次阅读
    Prometheus<b class='flag-5'>监控</b>业务<b class='flag-5'>指标</b>详解

    PLC从HTTP服务端获取JSON文件,解析数据到寄存器

    文件提交给HTTP的服务端; 服务端有返回的JSON,或者GET命令获取到的JSON,网关进行解析后将数据写入到PLC寄存器。 本文主要描述通过GET命令获取数据,解析到西门子PLC的
    发表于 01-24 09:47

    Kubernetes Gateway API攻略教程

    Kubernetes Gateway API 刚刚 GA,旨在改进将集群服务暴露给外部的过程。这其中包括一套更标准、更强大的 API资源,用于管理已暴露的服务。在这篇文章中,我将介绍 Gateway
    的头像 发表于 01-12 11:32 806次阅读
    <b class='flag-5'>Kubernetes</b> Gateway API攻略教程

    配置Kubernetes中Pod使用代理的两种常见方式

    的需要。本文将介绍配置Kubernetes中Pod使用代理的两种常见方式:通过ConfigMap和直接在应用程序环境变量中设置。
    的头像 发表于 01-05 11:22 1028次阅读
    配置<b class='flag-5'>Kubernetes</b>中Pod使用代理的两种常见<b class='flag-5'>方式</b>

    滤波电容不同补偿方式优缺点对比

    滤波电容不同补偿方式优缺点对比  滤波电容是电子电路中常用的元件,用于对信号进行滤波处理。不同的补偿方式可以帮助提高滤波电容的性能和稳定性。本文将详细介绍几种常见的滤波电容补偿方式的优
    的头像 发表于 01-04 16:00 1024次阅读

    使用Jenkins和单个模板部署多个Kubernetes组件

    在持续集成和部署中,我们通常需要部署多个实例或组件到Kubernetes集群中。通过Jenkins的管道脚本,我们可以自动化这个过程。在本文中,我将演示如何使用Jenkins Pipeline及单个
    的头像 发表于 01-02 11:40 664次阅读
    使用Jenkins和单个模板部署多个<b class='flag-5'>Kubernetes</b>组件

    Kubernetes RBAC:掌握权限管理的精髓

    Kubernetes RBAC(Role-Based Access Control)是 Kubernetes 中一项关键的安全功能,它通过细粒度的权限控制机制,确保集群资源仅被授权的用户或服务账号访问。
    的头像 发表于 12-25 09:43 435次阅读

    Kubernetes开发指南之深入理解CRD

    CRD本身是Kubernetes内置的资源类型,全称是CustomResourceDefinition,可以通过命令查看,kubectl get查看集群内定义的CRD资源。
    的头像 发表于 12-13 18:19 799次阅读
    <b class='flag-5'>Kubernetes</b>开发指南之深入理解CRD

    使用普通运放时如何获取运放的增益误差和增益非线性这样的指标呢?

    AD8221这类的仪表放大器数据手册中会有闭环的增益误差和增益非线性度这样的指标,但是像OP2177之类的普通运放的数据手册中没有这些参数,我在使用普通运放时如何获取运放的增益误差和增益非线性这样的指标呢?
    发表于 11-17 06:58

    采用回调函数的方式优化嵌入式系统命令解析

    在嵌入式系统开发中,命令解析是一个关键的环节,它负责解析用户或其他系统发送的命令,并执行相应的操作。传统的命令解析方法通常采用switch case语句,这种方式虽然经典,但在功能扩展
    的头像 发表于 11-14 09:19 580次阅读
    采用回调函数的<b class='flag-5'>方式</b>优化嵌入式系统命令<b class='flag-5'>解析</b>