title: 【從題目中學習k8s】-【Day26】K8s叢集的資源監控 1
description: 以無比的恆毅力堅持30天鍊成鐵人--連續30天,一天發表一篇IT技術文章
【從題目中學習k8s】-【Day26】K8s叢集的資源監控 1
tags:
DevOps
CICD
K8s
Docker
做了連續16天的題目,不知道大家有沒有覺得筋疲力盡了呢?
(筆者舉手)
前面幾天的介紹內容其實還沒有完全涵蓋全部的 Kubernetes,但是基本內容都已經涵蓋了,讀者們應該可以建置一些小的微服務應用程式囉~ 接下來這幾天,筆者想介紹一些經常和 K8s搭配使用的工具,這些工具可以幫助 K8s 完成某些特定工作,像是叢集的資源監控或是安全偵測等等議題。但是要使用這些工具,需要先了解一下 K8s 的資源監控運作機制,所以今天就當作是個前導介紹,那我們開始吧~
K8s集群監控
K8s本身就具備一些基本的伺服器監控工具,例如:
K8s Dashboard
:插件工具,展示每個 K8s 集群上的資源利用情況,也是實現資源和環境管理與交互的主要工具。
Pod liveness probe
:Container健康狀態診斷工具。
Kubelet
:每個
Node
上都運行著
Kubelet
,監控Container的運行情況。
Kubelet
也是
Control Plane
與各個
Node
通信的渠道。
kubelet default 監聽的port是10250,所以我們可以在Control Plane或Node上直接訪問
curl https://127.0.0.1:10250/metrics/cadvisor -k
需使用 https
metrics/cAdvisor
是 kubelet Pod 相關的監控指標,它還有一個 metrics,是 kubelet 自身的監控指標
-k
表示不驗證 kubelet 證書,因整個K8s集群都是使用自簽署證書,因此沒必要驗證
Kube-state-metrics:輪詢Kubernetes API
,並將Kubernetes
的結構化信息轉換為metrics
。
除了上述基本監控工具外,還有一些功能更完善,監控更及時的Monitor,下面列舉幾個:
Heapster (Matric-Server的原版)
kube-state-metrics
Matric-Server
Prometheus
Elastic Stack
DataDog
Dynatrace
筆者挑了一個當中很方便也簡單的 Matric-Server
監控工具來介紹~
Metric-Server介紹&安裝
一個 K8s cluster
可以有一個 Metric-Server
監控資源,包括監控Node
或 Pod
資訊。但須注意的是,Metric-Server
是 in memory 的 monitor,他不會將監控的資料儲存到Disk或掛載的Volume
,所以無法獲得過去的監控資料。下面介紹如何安裝:
直接將Github上的open spurce pull到本地端並創建其中物件
$ kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml
該YAML會於kube-system
namespace創建一個Deployment
$ kubectl get deploy -n kube-system
NAME READY UP-TO-DATE AVAILABLE AGE
coredns 2/2 2 2 5d20h
metrics-server 1/1 1 1 2d11h
用kubectl top no <node-name>
查看 Node
監控資訊,會發現有error,這個error可能是因為Node名稱找不到,或是CA認證沒過 (通常是這兩種原因),這時只要在metrics-server Deployment
加上一些對應的參數就可以了
$ kubectl edit deploy metrics-server -n kube-system
containers:
- name: metrics-server
image: k8s.gcr.io/metrics-server-amd64:v0.3.5
## 加入下面這些command
command:
- /metrics-server
- metrics-resolution=30s
- --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP
- --kubelet-insecure-tls
再用kubectl top no <node-name>
命令,就可以正常監控Node資訊囉~
$ kubectl top no
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
g8master 188m 4% 1827Mi 23%
g8node1 83m 4% 2201Mi 57%
g8node2 72m 3% 1607Mi 41%
Monitor 如何監控
我們都知道在Node
中是透過kubelet
來管理Node
的運作,kubelet
需要透過 apiserver 接收Control Plane
下達的命令在 Node
中運行Pod
。而kubelet
中其實還包含一個subcomponent,稱為 cAdvisor 或是 Container Advisor ,cAdvisor 負責從 Pod
中擷取performance metrics,並將收集到的數據以metrics-api的形式,透過Summary API expose給Metric-Server。
今天介紹 K8s
中基本的叢集監控方式,明天再來介紹個更強大的監控工具 -- Prometheus
。今天就到這囉~ 謝謝大家~
kubernetes-sigs/metrics-server
Resource metrics pipeline
Kubernetes监控:Metrics Server部署方法
Thank you!
You can find me on
george4908090@gmail.com