容器監控-Prometheus:2. Prometheus部署前奏-Helm&&Operator
文章目錄
部署方案選擇
-
手動部署
把每個組件配置好,必須瞭解Prometheus每個組件,如何協同工作,高可用,如何做配置複雜度高
-
Helm
類似於centos 的yum,是kubernetes的文件包管理工具。Helm 部署Prometheus要比手動部署簡單,它會把Prometheus和相關組件都部署起來,跑在k8s裏面。但是部署完有些工作,高可用、額外組件部署需要自己處理。
-
Prometheus Operator
更深入層面做了Prometheus部署管理工作。利用了kubernetes的Operator機制,本質是利用kubernetes GRD加控制器。
-
Helm+Prometheus Operator
非常優雅。使用這個兩個東西必須要付出一些代價就先把這個兩個東西搞清楚。
Helm
Helm簡介
-
類似Ubuntu的apt-get 、centos 的yum,helm是kubernetes的文件包管理工具,一條命令就可以完成,軟件包的安裝卸載。
-
kubernetes的文件包管理
提供了kubernetes 軟件包的部署、刪除、升級、回滾各種強大的功能。
-
一個包一Chart(一個目錄)
kubernetes的軟件包是一個Chart本質上就是一個目錄,打成一個tar.gz存儲起來。發佈者可以打包應用管理應用的依賴關係,讓別人使用起來更加簡單。
使用Helm就不用關心編寫kubernetes的配置,可以通過helm一條命令下載,在kubernetes把你要的應用安裝部署好。
Helm Architecture
-
首先有
Helm客戶端
,跟yum一樣二進制文件, -
然後
chart Files
是一個目錄,裏面存儲了按照一定的目錄結構和約定的名字,當然包括了kubernetes資源相關的yaml文件。 -
helm 存放在哪裏對於本地來說這些東西存放在一個本地倉庫,同樣遠端有一個
storage
負責存儲各種各樣Helm軟件包,本質也是一個web服務器,可以去下載軟件包,並且提供了chart包的文件清單。共客戶端查詢,跟yu m源類似。helm也可以同時使用管理多個不同repod。
4. Tiller
是helm命令的服務端。用來接收helm的請求,並且對應的chart去生成kubernetes的配置文件,然後提交給你kubernetes去創建應用。也就是helm跟kubernetes之間的橋樑。
Operator
Operator實現原理
引:
其實Operator不太好理解,字面上的意思是操作者
,
前面我們學會很多資源類型比如pod、deolyment、service、daemonSet都是kubernetes預先定義好的,
kubernetes有自己的控制器管理他們。控制器的本質是代碼循環,不斷去看部署預期的狀態與真實狀態的差別,並努力讓他保持一致。
控制器解釋
比如一個deolyment定義的實例數是3,現在只有1,控制器會再啓動兩個實例,達到一致
Kubernetes1.7以後就支持自定義資源類型(CRD),Operator就是利用Kubernetes 的CRD
- 自定義資源類型(CRD)+自定義控制器 去實現操作者的能力。
比如:
apiVersion: "etcd.database.coreos.com/v1beta2"
kind: "EtcdCluster"
metadata:
name: "example-etcd-cluster"
namespace: kubesphere-system
spec:
size: 3
version: "3.2.13"
自定義一個類型是EtcdCluster
,然後再開發一個控制器,控制器的循環代碼裏面就可以拿到EtcdCluster
的配置,通過調用kubernetes接口去實現一個預期的EtcdCluster
集羣創建的一個過程。
Pod 的創建和Pod的配置都是在自定義控制器裏面完成的。所以Operator也能勝任類似於StatefulSet的工作,並且它是針對特定的服務。會比StatefulSet更加優雅的完成工作。不研究那麼深,如何開發自定義控制器,知道原理就OK。