DevOps
CICD
K8s
Docker
做了連續16天的題目,不知道大家有沒有覺得筋疲力盡了呢?(筆者舉手)
前面幾天的介紹內容其實還沒有完全涵蓋全部的 Kubernetes,但是基本內容都已經涵蓋了,讀者們應該可以建置一些小的微服務應用程式囉~ 接下來這幾天,筆者想介紹一些經常和 K8s搭配使用的工具,這些工具可以幫助 K8s 完成某些特定工作,像是叢集的資源監控或是安全偵測等等議題。但是要使用這些工具,需要先了解一下 K8s 的資源監控運作機制,所以今天就當作是個前導介紹,那我們開始吧~
K8s本身就具備一些基本的伺服器監控工具,例如:
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集群都是使用自簽署證書,因此沒必要驗證
cAdvisor雖然好用,但有些缺點:
- 僅能監控基礎資源利用情況,無法分析應用的實際性能
- 不具備長期存儲和趨勢分析能力。
Kubernetes API
,並將Kubernetes
的結構化信息轉換為metrics
。除了上述基本監控工具外,還有一些功能更完善,監控更及時的Monitor,下面列舉幾個:
筆者挑了一個當中很方便也簡單的 Matric-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%
我們都知道在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部署方法
You can find me on