k8s監控相關概念
基本概念
Kubernetes叢集分為一個Master節點
和若干Node節點
。
叢集所有的控制命令都傳遞給Master元件,在Master節點上執行(kubectl命令在其他Node節點上無法執行
)。
通常在Master節點啟動所有的Master元件
,包括etcd、api server、controller manager、scheduler
。
四個元件的主要功能可以概括為:
api server:其他Master元件都通過呼叫api server提供的rest介面實現各自的功能,如controller就是通過api server來實時監控各個資源的狀態的。
etcd:叢集資料配置中心。叢集的主資料庫(鍵值資料庫),儲存著所有的資源物件及其狀態。資料變更都是通過api server進行的。
scheduler:監聽新建pod副本資訊,並通過排程演算法為該pod選擇一個最合適的Node節點。會檢索到所有符合該Pod要求的Node節點,執行Pod排程邏輯。排程成功之後,會將Pod資訊繫結到目標節點上,同時將資訊寫入到etcd中。
controller manager:叢集內各種資源controller的核心管理者,保證其下每一個controller所對應的資源始終處於期望狀態。
通常不會在Master節點上執行任何使用者容器,Node節點才是真正執行工作負載的節點。
關係圖
controller,即控制器,主要有Deployment,Daemonset、Replicaset(為Replicas controller的進化)等。
得到Pod、Deployment、Daemonset的詳細資訊,Replicaset同理
首先獲得Pod、controller的列表
kubectl get daemonset -n monitoring
接著獲得他們相應的詳細資訊,注意需要宣告他們所處的名稱空間
kubectl describe pod prometheus-core-6b5dc8dd4d-fs9jh -n monitoring
kubectl describe deployment prometheus-core -n monitoring
kubectl describe daemonset prometheus-node-exporter -n monitoring
Service、Pod以及Node間的關係為:
Deployment、Replicaset以及Pod之間的關係
RS部署Pod,Deployment則使管理RS更加方便。
RS保證在同一時間能夠執行指定數量的Pod副本,如果實際Pod數量比指定的多就結束掉多餘的,如果實際數量比指定的少就啟動缺少的。當Pod失敗、被刪除或被終結時,RC會自動建立新的Pod來保證副本數量。Deployment使用了RS,它是更高一層的概念。在一般情況下,我們推薦使用Deployment而不直接使用RS。
這一整套可以向外提供穩定可靠的Service。
Endpoint、Service和Pod的關係
Endpoint是可被訪問的服務端點,只有Service關聯的狀態為Running 的pod才可能成為Endpoint。
Pod的狀態
Pending:掛起,這時pod已經被k8s叢集接受,但有一個或多個容器映象尚未建立,等待時間包括排程pod的時間和通過網路下載容器映象的時間。
Running:此時pod已經被繫結到某一個節點上,pod中所有的容器都被建立並且至少有一個容器正在執行或者處於啟動或重啟狀態。
Succeed:此時pod中的所有容器都被成功終止並且不會重啟。
Failed:pod中的所有容器都已經被終止,並且至少有一個容器因為失敗而終止(容器以非0狀態退出)。
資源物件
kubernetes Dashboard
1、Deployment:常與Namespace掛鉤。
在yaml檔案中宣告需要多少Pod副本。在建立完Deployment物件後就會自動部署多少個Pod。
2、Daemonset:常與Namespace掛鉤。
保證在每個node上都執行一個pod副本。
3、Pod:常與Node、Namespace掛鉤。
包含一個或多個container。Pod是kubernetes中可以建立和部署的最小單位,也是kubernetes的排程單元,一個pod就代表著叢集中執行的一個程序。Pod本身沒有資源,Pod中的容器具有資源。
4、Container:容器。
kubectl get pods -n monitoring
NAME READY STATUS RESTARTS AGE
alertmanager-56797bdb65-x2qbv 1/1 Running 0 8d
此時說明pod中共有一個container且已經正常啟動。
5、Replicaset:常與Namespace掛鉤。
Replicas Controller的進化。
6、Service:與雲原生應用中的微服務概念對應。作為入口地址,向外提供穩定可靠的Service。
7、Endpoint
例項:
Deployment:prometheus-core、alertmanager、kube-state-metrics
Daemonset:prometheus-node-exporter
Pod:prometheus-core-6****-f****、alertmanager-5****-x****、kube-state-metrics-f****-8****、prometheus-node-exporter-5****、prometheus-node-exporter-l****
ReplicaSet:prometheus-core-6****、alertmanager-5****、kube-state-metrics-f****
Service:prometheus、alertmanager、kube-state-metrics、prometheus-node-exporter
注1:Replicas的字尾與Pod第一部分的字尾是一樣的
注2:Pod字首的型別有Deployment、Daemonset
注3:Pod被分配到Node之後會根據映象下載策略進行映象下載、
注4:從Deployment、ReplicaSet、Pod三者的關係是一個Deployment對應多個ReplicaSet、一個ReplicaSet對應多個Pod。
重要參考
1、k8s監控方案 – 相關yaml參考
https://blog.csdn.net/liukuan73/article/details/78881008