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

語言: CN / TW / HK

在本文中,我們將安裝一個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 Operator和etcd 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還提供了所有所需的可視性,在必要的情況下,可以方便地進行故障排除。

分享到: