無需kubectl!快速使用Prometheus監控Etcd

簡介

本教程是「Etcd超全解:原理闡釋及部署設置的最佳實踐」的後續文章。在本文中,我們將安裝一個Etcd集羣並使用Prometheus和Grafana配置監控,以上這些操作我們都通過Rancher進行。

我們將看到在不需要依賴的情況下充分利用Rancher的應用商店實現這一目標是如此容易。在本文中,我們將 不需要

  • 爲運行kubectl專門配置交互框,並指向Kubernetes集羣
  • kubectl的使用知識,因爲我們可以使用Rancher UI完成這一切
  • 安裝/配置 Helm binary

Demo的前期準備

你將需要:

  • 一個Google雲平臺的賬號(免費的即可)。任意其他雲也可以。
  • Rancher v2.4.7(撰寫本文時的最新版本)
  • 運行在GKE(版本爲1.16.3-gke.1)上的Kubernetes集羣(在EKS或AKS上運行也可以)

啓動一個Rancher實例

首先,啓動你的Rancher實例。你可以訪問以下鏈接查看快速啓動指南:

https://www.rancher.cn/quick-start/

使用Rancher部署一個GKE集羣

使用Rancher來設置和配置一個Kubernetes集羣,你可以查看相關文檔:

https://docs.rancher.cn/docs/rancher2/cluster-provisioning/production/_index/

部署etcd、Prometheus和Grafana

我們可以利用Rancher的應用商店來安裝所有的軟件。應用商店是Helm chart的集合,它可以讓用戶能夠輕鬆地重複部署這些應用程序。

當我們的集羣啓動並運行後,讓我們選擇爲其創建的Default項目,在Apps選項卡中,點擊【Launch】。

我們要安裝的第一個應用是etcd-operator。保留它預先填充的所有默認值,並確保你也啓用了etcd集羣的創建(爲了demo的簡單性,我們取消選擇etcd Backup Operatoretcd Restore Operator)。

Operator的作用是觀察、分析和行動。它使用Kubernetes API來觀察當前集羣的狀態。如果運行狀態與所需狀態之間有任何差異,它就會發現並修復它們。

例如,假設我們正在運行一個有三個成員的etcd集羣。如果發生了一些事情,其中一個成員倒下了,Operator會觀察到這一點。它根據所需的狀態做一個差異,然後根據差異恢復丟失的成員。於是,我們在沒有人爲干預的情況下擁有了一個健康的集羣。

要安裝Prometheus和Grafana,請激活Rancher中集成的集羣監控支持。從 【全局】視圖中,選擇你要配置的集羣,並選擇【工具】→【監控】以啓用它。爲了允許對Grafana的更改持久化,請確保爲Grafana和Prometheus啓用持久化存儲。如果你沒有設置任何持久化存儲,可以瞭解一下Longhorn,這是Kubernetes的雲端分佈式塊存儲。

當一切都在安裝時,你可以探索一些選項卡。檢查工作負載(Pods、Deployments、DaemonSet)或創建的服務的進度。

讓我們連接到一個etcd Pod,以便使用一些基本的etcdctl命令(更多細節可以查閱之前的文章)。選擇一個Pod,點擊它的垂直省略號(3個豎點)菜單按鈕,然後選擇 Execute Shell

配置Prometheus以及Grafana

監控 etcd 集羣的最佳和最簡單的方法之一是使用 Prometheus 和 Grafana。讓我們登錄到Grafana——在集羣概覽中點擊任意Grafana圖標即可登錄。

Grafana已經預先配置了Prometheus作爲數據源,包含幾個可視化集羣狀態的dashboard。

登錄Grafana爲etcd添加一個儀表盤。默認的用戶名和密碼都是 “admin”(第一次登錄時,會提示你更改)。然後用id3070導入默認的etcd儀表盤模板。點擊加載,然後剩下的步驟就是選擇Prometheus數據源。

我們已經成功導入了dashboard,我們可以看到各種圖表,但是沒有數據顯示。爲什麼呢?我們已經運行了Prometheus,並且Grafana也與之集成。可問題是我們沒有告訴Prometheus去收集與我們etcd集羣相關的目標。

讓我們回到Rancher中去解決這個問題。進入系統項目,點擊【資源】標籤下的導入YAML。然後將以下資源導入到cattle-prometheus命名空間中:

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  labels:
    source: rancher-monitoring
  name: etcd
  namespace: cattle-prometheus
spec:
  endpoints:
    - port: client
  namespaceSelector:
    matchNames:
      - etcd-operator
  selector:
    matchLabels:
      app: etcd

我們如何驗證我們的新配置是有效的,並且確保Prometheus正在執行它的工作呢?我們需要對其進行檢查,請點擊系統項目的Apps選項卡,並點擊cluster-monitoring應用程序中的第二個/index/.html鏈接。

這將打開Prometheus web UI界面。在界面中,進入Graphs並手動執行一些查詢,如果有數據顯示,那麼就說明我們的設置已經完成。

我們需要做的最後一件事是檢查Grafana並且查看我們有相關的數據圖表。

卸載應用程序和集羣

要清理我們在本文中使用的資源,我們只需要在全局層級中,選擇我們的集羣並點擊【Delete】。

通過這樣做,除了爲Prometheus創建的持久化存儲外,所有的東西都將被刪除。我們需要從我們的雲提供商控制檯來處理這個問題。

當然,我們可以只從Rancher中執行清理,但步驟略有不同。

  • disable monitoring:在全局層級,導航到集羣,選擇工具→監控並點擊【Disable】按鈕。
  • 移除持久化存儲:進入 “系統項目"→"資源"→"工作負載"→"卷”;選擇你的卷並單擊 “刪除”。
  • 刪除集羣:在全局層級選擇集羣並刪除它。

總結

在這個demo中,我們看到了如何使用Rancher安裝Etcd(使用etcd-operator),Prometheus和Grafana。所有的集成都是開箱即用的:我們只需要添加一些東西就可以完成所有的配置。Rancher還提供了所有所需的可視性,在必要的情況下,可以方便地進行故障排除。

本文轉載自公衆號RancherLabs(ID:RancherLabs)。

原文鏈接

無需kubectl!快速使用Prometheus監控Etcd

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章