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

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

3天内不再提示

如何获取采集服务器Kubernetes监控指标

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

扫码添加小助手

加入工程师交流群

对比

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文件到本地。

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

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

# docker pull zhaoqinchang/metrics-server:0.3.7 0.3.7: Pulling from zhaoqinchang/metrics-server 9ff2acc3204b: Pull complete 9d14b55ff9a0: Pull complete Digest:

sha256:c0efe772bb9e5c289db6cc4bc2002c268507d0226f2a3815f7213e00261c38e9 Status: Downloaded newer image for zhaoqinchang/metrics-server:0.3.7 docker.io/zhaoqinchang/metrics-server:0.3.7

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

# cat components.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: # mount in tmp so we can safely use from-scratch images and/or read-only containers - 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:

# kubectl apply -f components.yaml clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created clusterrolebinding.rbac.authorization.k8s.io/metrics-serverauth-delegator created

rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created

apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created serviceaccount/metrics-server created

deployment.apps/metrics-server created service/metrics-server created

clusterrole.rbac.authorization.k8s.io/system:metrics-server created clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created

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

# kubectl api-versions | grep metrics metrics.k8s.io/v1beta1

使用

kubectl top命令可显示节点和Pod对象的资源使用信息,它依赖于集群中的资源指标API来收集各项指标数据。它包含有Node和Pod两个子命令,可分别显示Node对象和Pod对象的相关资源占用率。

列出Node资源占用率命令的语法格式为“kubectl top node [-l label | NAME]”,例如下面显示所有节点的资源占用状况的结果中显示了各节点累计CPU资源占用时长及百分比,以及内容空间占用量及占用比例。必要时,也可以在命令直接给出要查看的特定节点的标识,以及使用标签选择器进行节点过滤。

[root@master metric]# kubectl top nodes NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% master 282m 14% 1902Mi 51% node-02 70m 3% 1371Mi 37% node-03 121m 1% 892Mi 11%

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

[root@master metric]# kubectl top pods -n kube-system NAME CPU(cores) MEMORY(bytes) etcd-master 32m 300Mi kube-apiserver-master 86m 342Mi kube-controller-manager-master 30m 48Mi kube-flannel-ds-l5ghn 5m

10Mi kube-flannel-ds-rqlm2 4m 12Mi kube-flannel-ds-v92r9 4m 14Mi kube-proxy-7vjcv 18m 15Mi kube-proxy-xrz8f 13m 21Mi kube-proxy-zpwn6 1m 14Mi kube-scheduler-master 7m 17Mi metrics-server-5549c7694f-7vb66 2m 14Mi

kubectl top命令为用户提供简洁、快速获取Node对象及Pod对象系统资源占用状况的接口,是集群运行和维护的常用命令之一。

原文链接:https://juejin.cn/post/6996862439560052773

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    13

    文章

    10094

    浏览量

    90883
  • 监控系统
    +关注

    关注

    21

    文章

    4149

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    恒讯科技解析:服务器监控与告警设置—企业必备指南

    一、为什么企业必须配置服务器监控和告警 要是没有监控系统,企业,就只能在故障出现之后,才发觉问题,进而造成业务方面的损失。恒讯科技长期服务企业客户发现超八成的
    的头像 发表于 11-25 17:42 384次阅读

    校时服务器在安防监控系统中的应用解析

    在当今这个信息化飞速发展的时代,安防监控系统作为保障公共场所安全的重要手段,其稳定性和同步性对于整个系统的有效运行至关重要。而在这其中,校时服务器扮演着一个角色。本文旨在探讨校时服务器在校时
    的头像 发表于 11-06 14:55 157次阅读
    校时<b class='flag-5'>服务器</b>在安防<b class='flag-5'>监控</b>系统中的应用解析

    电能质量在线监测装置本地服务器性能监控的频率应该如何设置?

    电能质量在线监测装置本地服务器性能监控的频率,需遵循 “ 核心指标高频抓、非核心指标低频扫、特殊场景动态调 ” 的原则,结合指标变化速度、故
    的头像 发表于 11-05 10:16 370次阅读
    电能质量在线监测装置本地<b class='flag-5'>服务器</b>性能<b class='flag-5'>监控</b>的频率应该如何设置?

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

    在云原生技术成为主流的今天,Docker和Kubernetes(K8s)已成为现代化应用开发和部署的事实标准。对于选择香港服务器的开发者与企业而言,一个核心问题是:香港服务器能否完美支持Docker
    的头像 发表于 10-21 15:47 371次阅读

    如何使用 CyCloneTCP 和 FreeRTOS 从 SNTP 服务器获取时间?

    使用 CyCloneTCP 和 FreeRTOS 从 SNTP 服务器获取时间
    发表于 09-04 08:17

    怎样在阿里ECS服务器上架设自己的OpenVPN服务器

    需要自己架设服务器,让现场的IR615路由连接自己的服务器。能通过自己的服务器进行数据采集和远程运维。
    发表于 08-06 06:56

    欧洲服务器免费ip地址怎么获取?#欧洲服务器 #免费IP地址 #服务器

    服务器
    jf_57681485
    发布于 :2025年06月13日 11:15:04

    新加坡服务器延迟大吗?真相在这里#新加坡服务器 #服务器

    服务器
    jf_57681485
    发布于 :2025年04月18日 13:48:50

    安徽京准:NTP网络时间服务器助力石油管道监控改造

    安徽京准:NTP网络时间服务器助力石油管道监控改造
    的头像 发表于 04-18 11:12 590次阅读
    安徽京准:NTP网络时间<b class='flag-5'>服务器</b>助力石油管道<b class='flag-5'>监控</b>改造

    安徽京准:NTP时间同步服务器提升石油管道监控效率

    安徽京准:NTP时间同步服务器提升石油管道监控效率
    的头像 发表于 04-08 09:37 521次阅读
    安徽京准:NTP时间同步<b class='flag-5'>服务器</b>提升石油管道<b class='flag-5'>监控</b>效率

    MKW45B41Z客户端无法从服务器获取服务是为什么?

    。MKW45B41Z (自定义板) 充当中央设备客户端角色。MKW45 客户端扫描外围设备(NRF 连接)设备并连接到外围设备(NRF 连接)设备。连接 MKW45(自定义板卡)后,客户端无法从服务器获取服务(NRF 连接)
    发表于 03-28 07:40

    NTP校时服务器 时钟同步服务器

    服务器
    jf_75250307
    发布于 :2025年03月19日 20:56:34

    基于华为云 Flexus X 实例部署 Uptime-Kuma 服务器监控面板

    系统来实时掌握服务器的运行状态。         在这样的背景下,uptime-kuma 应运而生。uptime-kuma 是一款开源的服务器监控面板,它能够帮助用户实时监控
    的头像 发表于 01-17 09:42 1053次阅读
    基于华为云 Flexus X 实例部署 Uptime-Kuma <b class='flag-5'>服务器</b><b class='flag-5'>监控</b>面板

    Flexus 云服务器 X 实例实践:部署 ServerBee 监控工具

    引言 在当今数字化的时代,服务器的有效监控与管理对于企业和开发者至关重要。华为云作为云计算领域的佼佼者,一直以强大的技术实力和卓越的服务品质著称。其 Flexus 云服务器 X 实例,
    的头像 发表于 01-14 09:26 1054次阅读
    Flexus 云<b class='flag-5'>服务器</b> X 实例实践:部署 ServerBee <b class='flag-5'>监控</b>工具

    Flexus 云服务器 X 实例实践:安装 Ward 服务器监控工具

    了强大而灵活的计算能力。而在系统运维管理方面,Ward 这一专为 Linux 系统打造的监控工具功能强大,当我们将其安装在华为云 Flexus 云服务器 X 实例上时,又会擦出怎样的火花呢? 一、Flexus 云服务器 X 实例
    的头像 发表于 01-13 15:51 772次阅读
    Flexus 云<b class='flag-5'>服务器</b> X 实例实践:安装 Ward <b class='flag-5'>服务器</b><b class='flag-5'>监控</b>工具