<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 12689字,需瀏覽 26分鐘

           ·

          2021-09-12 21:48


          對(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提供。

          之所以沒(méi)有把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),但他沒(méi)有能力導(dǎo)出這些指標(biāo)。


          部署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文件為如下內(nèi)容:
          # 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-server:system:auth-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    #修改鏡像為剛剛拉取下來(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:

          # kubectl apply  -f components.yaml 
          clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created
          clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-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是否出現(xiàn)在Kubernetes集群的API群組列表中:

          # kubectl api-versions | grep metrics 
          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@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%

          而名稱空間級(jí)別的Pod對(duì)象資源占用率的使用方法會(huì)略有不同,使用時(shí),一般應(yīng)該跟定名稱空間及使用標(biāo)簽選擇器過(guò)濾出目標(biāo)Pod對(duì)象。例如,下面顯示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命令為用戶提供簡(jiǎn)潔、快速獲取Node對(duì)象及Pod對(duì)象系統(tǒng)資源占用狀況的接口,是集群運(yùn)行和維護(hù)的常用命令之一。

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

          文章轉(zhuǎn)載: 分布式實(shí)驗(yàn)室
          (版權(quán)歸原作者所有,侵刪)


          點(diǎn)擊下方“閱讀原文”查看更多

          瀏覽 56
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产AV无码成人精品毛片 | 爱液视频网站 | 免费观看黄色片 | 国产精品日韩欧美一级极品欧美日韩一级精品 | 五月天综合网 |