0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

解析Kubernetes監(jiān)控指標(biāo)獲取方式對(duì)比

馬哥Linux運(yùn)維 ? 來(lái)源:掘金 ? 作者:Honest1y ? 2021-09-26 10:45 ? 次閱讀

對(duì)比

node-exporter用于采集服務(wù)器層面的運(yùn)行指標(biāo),包括機(jī)器的loadavg、filesystem、meminfo等基礎(chǔ)監(jiān)控,類似于傳統(tǒng)主機(jī)監(jiān)控維度的zabbix-agent。 metric-server/heapster是從api-server中獲取CPU、內(nèi)存使用率這種監(jiān)控指標(biāo),并把他們發(fā)送給存儲(chǔ)后端,如InfluxDB或云廠商,他當(dāng)前的核心作用是:為HPA等組件提供決策指標(biāo)支持。 kube-state-metrics關(guān)注于獲取Kubernetes各種資源的最新狀態(tài),如Deployment或者DaemonSet。 例如:
  • 我調(diào)度了多少個(gè)Replicas?現(xiàn)在可用的有幾個(gè)?

  • 多少個(gè)Pod是running/stopped/terminated狀態(tài)?

  • Pod重啟了多少次?

  • 我有多少job在運(yùn)行中?

這些指標(biāo)都由kube-state-metrics提供。 之所以沒有把kube-state-metrics納入到metric-server的能力中,是因?yàn)樗麄兊年P(guān)注點(diǎn)本質(zhì)上是不一樣的。
  • metric-server僅僅是獲取、格式化現(xiàn)有數(shù)據(jù),寫入特定的存儲(chǔ),實(shí)質(zhì)上是一個(gè)監(jiān)控系統(tǒng)。

  • kube-state-metrics是將Kubernetes的運(yùn)行狀況在內(nèi)存中做了個(gè)快照,并且獲取新的指標(biāo),但他沒有能力導(dǎo)出這些指標(biāo)。
    部署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文件為如下內(nèi)容:

	#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#修改鏡像為剛剛拉取下來(lái)的鏡像 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是否出現(xiàn)在Kubernetes集群的API群組列表中:

	

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

使用

kubectl top命令可顯示節(jié)點(diǎn)和Pod對(duì)象的資源使用信息,它依賴于集群中的資源指標(biāo)API來(lái)收集各項(xiàng)指標(biāo)數(shù)據(jù)。它包含有Node和Pod兩個(gè)子命令,可分別顯示Node對(duì)象和Pod對(duì)象的相關(guān)資源占用率。 列出Node資源占用率命令的語(yǔ)法格式為“kubectl top node [-l label | NAME]”,例如下面顯示所有節(jié)點(diǎn)的資源占用狀況的結(jié)果中顯示了各節(jié)點(diǎn)累計(jì)CPU資源占用時(shí)長(zhǎng)及百分比,以及內(nèi)容空間占用量及占用比例。必要時(shí),也可以在命令直接給出要查看的特定節(jié)點(diǎn)的標(biāo)識(shí),以及使用標(biāo)簽選擇器進(jìn)行節(jié)點(diǎn)過(guò)濾。

	

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

而名稱空間級(jí)別的Pod對(duì)象資源占用率的使用方法會(huì)略有不同,使用時(shí),一般應(yīng)該跟定名稱空間及使用標(biāo)簽選擇器過(guò)濾出目標(biāo)Pod對(duì)象。例如,下面顯示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命令為用戶提供簡(jiǎn)潔、快速獲取Node對(duì)象及Pod對(duì)象系統(tǒng)資源占用狀況的接口,是集群運(yùn)行和維護(hù)的常用命令之一。 原文鏈接:https://juejin.cn/post/6996862439560052773
編輯:jq
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10780

    瀏覽量

    210498
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    8873

    瀏覽量

    84970
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1468

    瀏覽量

    61693
  • 機(jī)器
    +關(guān)注

    關(guān)注

    0

    文章

    773

    瀏覽量

    40663

原文標(biāo)題:Kubernetes監(jiān)控指標(biāo)獲取方式對(duì)比

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    使用Velero備份Kubernetes集群

    Velero 是 heptio 團(tuán)隊(duì)(被 VMWare 收購(gòu))開源的 Kubernetes 集群備份、遷移工具。
    的頭像 發(fā)表于 08-05 15:43 ?294次閱讀
    使用Velero備份<b class='flag-5'>Kubernetes</b>集群

    如何使用Kubeadm命令在PetaExpress Ubuntu系統(tǒng)上安裝Kubernetes集群

    Kubernetes,通??s寫為K8s,是一個(gè)開源的容器編排平臺(tái),旨在自動(dòng)化容器化應(yīng)用的部署、擴(kuò)展和管理。有了Kubernetes,您可以輕松地部署、更新和擴(kuò)展應(yīng)用,而無(wú)需擔(dān)心底層基礎(chǔ)設(shè)施。
    的頭像 發(fā)表于 07-15 13:31 ?764次閱讀
    如何使用Kubeadm命令在PetaExpress Ubuntu系統(tǒng)上安裝<b class='flag-5'>Kubernetes</b>集群

    【米爾-全志T113-i開發(fā)板試用】3、使用golang獲取系統(tǒng)信息

    獲取系統(tǒng)信息,我們可以使用Linux的Proc文件系統(tǒng),解析其中的文件來(lái)取得相應(yīng)的信息,但是那樣做太麻煩了,需要找很多資料,寫挺多的代碼。 我們可以使用現(xiàn)成的工具gopsutil。gopsutil
    發(fā)表于 02-22 09:39

    Prometheus監(jiān)控業(yè)務(wù)指標(biāo)詳解

    Kubernetes 已經(jīng)成了事實(shí)上的容器編排標(biāo)準(zhǔn)之下,微服務(wù)的部署變得非常容易。但隨著微服務(wù)規(guī)模的擴(kuò)大,服務(wù)治理帶來(lái)的挑戰(zhàn)也會(huì)越來(lái)越大。在這樣的背景下出現(xiàn)了服務(wù)可觀測(cè)性(observability)的概念。
    的頭像 發(fā)表于 01-24 10:32 ?502次閱讀
    Prometheus<b class='flag-5'>監(jiān)控</b>業(yè)務(wù)<b class='flag-5'>指標(biāo)</b>詳解

    ?PLC從HTTP服務(wù)端獲取JSON文件,解析數(shù)據(jù)到寄存器

    文件提交給HTTP的服務(wù)端; 服務(wù)端有返回的JSON,或者GET命令獲取到的JSON,網(wǎng)關(guān)進(jìn)行解析后將數(shù)據(jù)寫入到PLC寄存器。 本文主要描述通過(guò)GET命令獲取數(shù)據(jù),解析到西門子PLC的
    發(fā)表于 01-24 09:47

    Kubernetes Gateway API攻略教程

    Kubernetes Gateway API 剛剛 GA,旨在改進(jìn)將集群服務(wù)暴露給外部的過(guò)程。這其中包括一套更標(biāo)準(zhǔn)、更強(qiáng)大的 API資源,用于管理已暴露的服務(wù)。在這篇文章中,我將介紹 Gateway
    的頭像 發(fā)表于 01-12 11:32 ?781次閱讀
    <b class='flag-5'>Kubernetes</b> Gateway API攻略教程

    配置Kubernetes中Pod使用代理的兩種常見方式

    的需要。本文將介紹配置Kubernetes中Pod使用代理的兩種常見方式:通過(guò)ConfigMap和直接在應(yīng)用程序環(huán)境變量中設(shè)置。
    的頭像 發(fā)表于 01-05 11:22 ?1006次閱讀
    配置<b class='flag-5'>Kubernetes</b>中Pod使用代理的兩種常見<b class='flag-5'>方式</b>

    濾波電容不同補(bǔ)償方式優(yōu)缺點(diǎn)對(duì)比

    濾波電容不同補(bǔ)償方式優(yōu)缺點(diǎn)對(duì)比? 濾波電容是電子電路中常用的元件,用于對(duì)信號(hào)進(jìn)行濾波處理。不同的補(bǔ)償方式可以幫助提高濾波電容的性能和穩(wěn)定性。本文將詳細(xì)介紹幾種常見的濾波電容補(bǔ)償方式的優(yōu)
    的頭像 發(fā)表于 01-04 16:00 ?965次閱讀

    使用Jenkins和單個(gè)模板部署多個(gè)Kubernetes組件

    在持續(xù)集成和部署中,我們通常需要部署多個(gè)實(shí)例或組件到Kubernetes集群中。通過(guò)Jenkins的管道腳本,我們可以自動(dòng)化這個(gè)過(guò)程。在本文中,我將演示如何使用Jenkins Pipeline及單個(gè)
    的頭像 發(fā)表于 01-02 11:40 ?651次閱讀
    使用Jenkins和單個(gè)模板部署多個(gè)<b class='flag-5'>Kubernetes</b>組件

    Kubernetes RBAC:掌握權(quán)限管理的精髓

    Kubernetes RBAC(Role-Based Access Control)是 Kubernetes 中一項(xiàng)關(guān)鍵的安全功能,它通過(guò)細(xì)粒度的權(quán)限控制機(jī)制,確保集群資源僅被授權(quán)的用戶或服務(wù)賬號(hào)訪問(wèn)。
    的頭像 發(fā)表于 12-25 09:43 ?420次閱讀

    Kubernetes開發(fā)指南之深入理解CRD

    CRD本身是Kubernetes內(nèi)置的資源類型,全稱是CustomResourceDefinition,可以通過(guò)命令查看,kubectl get查看集群內(nèi)定義的CRD資源。
    的頭像 發(fā)表于 12-13 18:19 ?764次閱讀
    <b class='flag-5'>Kubernetes</b>開發(fā)指南之深入理解CRD

    使用普通運(yùn)放時(shí)如何獲取運(yùn)放的增益誤差和增益非線性這樣的指標(biāo)呢?

    AD8221這類的儀表放大器數(shù)據(jù)手冊(cè)中會(huì)有閉環(huán)的增益誤差和增益非線性度這樣的指標(biāo),但是像OP2177之類的普通運(yùn)放的數(shù)據(jù)手冊(cè)中沒有這些參數(shù),我在使用普通運(yùn)放時(shí)如何獲取運(yùn)放的增益誤差和增益非線性這樣的指標(biāo)呢?
    發(fā)表于 11-17 06:58

    怎么使用Kubernetes檢查點(diǎn)API快速進(jìn)行容器的備份和恢復(fù)呢?

    Kubernetes v1.25 引入了容器檢查點(diǎn) API 作為 alpha 特性。這提供了一種在不停止容器的情況下備份和恢復(fù)運(yùn)行在 Pod 中的容器的方式。此功能主要用于調(diào)試分析,但任何 Kubernetes 用戶都可以利用常
    的頭像 發(fā)表于 10-30 15:50 ?470次閱讀

    基于Kubernetes集群的typecho博客搭建方案

    Kubernetes提供了強(qiáng)大的高可用性特性,它可以自動(dòng)管理和調(diào)度容器實(shí)例,確保應(yīng)用程序在集群中始終可用。還可以監(jiān)控和自動(dòng)修復(fù)故障的容器實(shí)例,提高博客的穩(wěn)定性和可靠性。
    發(fā)表于 10-30 10:02 ?366次閱讀
    基于<b class='flag-5'>Kubernetes</b>集群的typecho博客搭建方案

    什么是Kubernetes CoreDNS?如何監(jiān)控 CoreDNS?

    如果您在 Kubernetes 中運(yùn)行您的工作負(fù)載,并且您不知道如何監(jiān)控 CoreDNS,請(qǐng)繼續(xù)閱讀本文:如何使用 Prometheus 來(lái)抓取 CoreDNS 指標(biāo),您應(yīng)該檢查哪些指標(biāo)
    發(fā)表于 10-30 09:55 ?2050次閱讀
    什么是<b class='flag-5'>Kubernetes</b> CoreDNS?如何<b class='flag-5'>監(jiān)控</b> CoreDNS?