Categories
程式開發

無需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會觀察到這一點。它根據所需的狀態做一個差異,然後根據差異恢復丟失的成員。於是,我們在沒有人為乾預的情況下擁有了一個健康的集群。

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

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

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

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

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

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

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

配置Prometheus以及Grafana

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

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

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

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

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

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

我們已經成功導入了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鏈接。

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

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

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

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

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

卸載應用程序和集群

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

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

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

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

總結

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

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

原文鏈接

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