Kubernetes 叢集的監控對於維護系統穩定性和效能至關重要。本文將引導讀者使用 Helm Charts 和 Kubernetes Operators 來建構和管理 Prometheus 與 Grafana 監控堆積疊。首先,我們會安裝 Operator Lifecycle Manager (OLM) 作為 Operator 的基礎,接著佈署 Prometheus Operator 以簡化 Prometheus 的管理。後續步驟將涵蓋 Prometheus 和 Grafana 的設定,包含 ServiceAccount、Role 和 RoleBinding 等 RBAC 組態,確保監控系統具備必要的叢集存取許可權。最後,我們將使用 kubectl port-forward 驗證 Prometheus 和 Grafana 的運作狀態,並示範如何設定 Grafana 資料來源和匯入 Node Exporter Full 儀錶板,以視覺化叢集的關鍵指標。
使用Helm Charts與Operators監控Kubernetes叢集
在本章中,我們將探討如何利用Helm Charts與Kubernetes Operators來佈署和管理Prometheus與Grafana監控堆積疊。這些工具能夠幫助我們有效地監控叢集的健康狀態和效能。
佈署Prometheus Operator
- 首先,我們需要安裝Operator Lifecycle Manager(OLM),它是管理叢集中Operator生命週期的工具。
$ kubectl apply -f https://github.com/operator-framework/operator-lifecycle-manager/releases/download/v0.24.0/crds.yaml
$ kubectl apply -f https://github.com/operator-framework/operator-lifecycle-manager/releases/download/v0.24.0/olm.yaml
內容解密:
- 我們使用
kubectl apply命令來安裝OLM的自定義資源定義(CRDs)和OLM本身。 - 這是佈署Operator的基礎步驟,確保我們能夠使用Operator來管理叢集中的應用。
- 安裝Prometheus Operator。
$ kubectl create -f https://operatorhub.io/install/prometheus-operator.yaml
內容解密:
- 這個步驟使用OperatorHub.io提供的YAML檔案來安裝Prometheus Operator。
- Prometheus Operator是一個Kubernetes Operator,用於管理Prometheus監控系統的生命週期。
- 等待幾分鐘,確保Prometheus Operator正確佈署。
$ kubectl get csv -n operators
內容解密:
- 我們使用
kubectl get csv命令來檢查Prometheus Operator的佈署狀態。 csv代表ClusterServiceVersion,是OLM用來管理Operator版本的核心資源。
- 驗證Prometheus Operator Pod正在執行。
$ kubectl get pods -n operators
內容解密:
- 這個命令用於檢查Prometheus Operator Pod的狀態,確保它們正在執行且沒有錯誤。
組態Prometheus與Grafana例項
- 建立一個新的名稱空間(namespace)來佈署監控解決方案。
$ kubectl apply -f monitoring-ns.yaml
內容解密:
- 我們建立了一個新的名稱空間
monitoring,用於隔離監控相關的資源。
- 組態ServiceAccount、Role和RoleBinding。
$ kubectl apply -f monitoring-sa.yaml
內容解密:
- 這個步驟建立了必要的RBAC(Role-Based Access Control)組態,確保Prometheus和Grafana有適當的許可權來存取叢集資源。
- 建立Prometheus例項。
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
name: example-prometheus
namespace: monitoring
spec:
replicas: 2
serviceAccountName: prometheus
serviceMonitorSelector:
matchLabels:
app.kubernetes.io/name: node-exporter
內容解密:
- 這裡我們定義了一個Prometheus例項,使用了
monitoring.coreos.com/v1API版本的Prometheus資源。 serviceMonitorSelector指定了Prometheus應該監控哪些ServiceMonitor資源。
- 建立Grafana例項。
apiVersion: grafana.integreatly.org/v1beta1
kind: Grafana
metadata:
name: grafana-a
namespace: monitoring
spec:
config:
auth:
disable_login_form: 'false'
log:
mode: console
security:
admin_password: start123
admin_user: root
內容解密:
- 這裡定義了一個Grafana例項,使用了
grafana.integreatly.org/v1beta1API版本的Grafana資源。 - 組態了Grafana的基本設定,包括認證、日誌和安全設定。
驗證監控堆積疊
- 使用
kubectl port-forward命令暴露Prometheus服務。
$ kubectl port-forward -n monitoring svc/prometheus-operated 9091:9090
內容解密:
- 這個命令將Prometheus服務的9090埠轉發到本地的9091埠,允許我們透過瀏覽器存取Prometheus介面。
使用瀏覽器存取
http://localhost:9091/targets,驗證Node Exporter是否可見。同樣地,使用
kubectl port-forward命令暴露Grafana服務。
$ kubectl port-forward -n monitoring service/grafana-a-service 3000:3000
內容解密:
- 將Grafana服務的3000埠轉發到本地的3000埠,允許我們存取Grafana儀錶板。
- 使用瀏覽器存取
http://localhost:3000,檢視Grafana儀錶板。
在 Google Kubernetes Engine 上執行 Kubernetes 叢集
在本章中,我們將在 Google Cloud Platform(GCP)上啟動一個 Kubernetes 叢集,這是我們在接下來幾章中將要介紹的三個公有雲供應商中的第一個。
在本章結束時,您將已經註冊了 Google Cloud Platform,在 Google Kubernetes Engine(GKE)上啟動了一個 Kubernetes 工作負載,並瞭解了 GKE 的功能。
我們將在本章中涵蓋以下主題:
- 什麼是 Google Cloud Platform 和 Google Kubernetes Engine?
- 準備您的本地環境
- 啟動您的第一個 Google Kubernetes Engine 叢集
- 佈署工作負載並與您的叢集互動
- 更多關於叢集節點的資訊
技術需求
要跟隨本章的內容,您需要一個具有有效付款方式的 Google Cloud Platform 帳戶。
按照本章中的指示將會產生財務成本。因此,一旦您完成使用所啟動的資源,請務必終止它們。
本章中參照的所有價格在撰寫時都是正確的,我們建議您在啟動任何資源之前檢視當前成本。
設定 Grafana 資料來源與儀錶板
登入 Grafana 入口網站
使用您在 grafana-instance.yaml 中組態的登入憑證(或如果您使用了 secret),登入 Grafana 控制檯。
新增資料來源
從左側選單中,前往 Connections | Data sources。在下一個視窗中,選擇 Prometheus 作為資料來源,並輸入 Prometheus 的 URL,例如 http://prometheus-operated.monitoring.svc.cluster.local:9090。
設定 Grafana 資料來源
### Grafana 資料來源設定
1. 前往 **Connections** | **Data sources**
2. 選擇 **Prometheus** 作為資料來源
3. 輸入 Prometheus 的 URL(例如:`http://prometheus-operated.monitoring.svc.cluster.local:9090`)
4. 點選 **Save & test** 按鈕
點選頁面底部的 Save & test 按鈕,您將收到成功訊息。如果您收到任何錯誤訊息,請檢查您使用的 Prometheus URL,包括 FQDN 和埠號。
匯入 Node Exporter Full 儀錶板
前往 Grafana Dashboard 網站,找到 Node Exporter Full 儀錶板。點選 Copy ID to clipboard 按鈕。
匯入儀錶板步驟
### 匯入 Node Exporter Full 儀錶板
1. 前往 [Grafana Dashboard](https://grafana.com/grafana/dashboards/)
2. 找到 **Node Exporter Full** 儀錶板
3. 點選 **Copy ID to clipboard** 按鈕
4. 在 Grafana WEBUI 中,前往 **Dashboards** | **New** | **Import**
5. 輸入剛才複製的儀錶板 ID,並點選 **Load** 按鈕
6. 選擇 **Prometheus** 作為資料來源,並點選 **Import** 按鈕
這樣,您就會看到具有預先組態的小工具和圖表的精美儀錶板。您可以探索該儀錶板並找到有關叢集的詳細資訊,例如 CPU、記憶體、網路流量等。
相關資源
- Helm 網站:https://helm.sh/
- Kubernetes Dashboard:https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/
- 存取 Dashboard:https://github.com/kubernetes/dashboard/blob/master/docs/user/accessing-dashboard/README.md
更多學習資源
Google Kubernetes Engine 上的 Kubernetes 叢集
Google Cloud Platform 與 Google Kubernetes Engine 簡介
在我們開始註冊 Google Cloud Platform 帳戶並安裝工具之前,我們需要先了解 Google Kubernetes Engine(GKE)以及如何啟動由 GKE 提供支援的叢集。本章將討論 Google Kubernetes Engine 的由來及其與 Google Cloud Platform(GCP)的關係。
Google Cloud Platform
在「三大」公有雲供應商中,GCP 是最新的參與者。在接下來的兩章中,我們將探討 Amazon Web Services(AWS)和 Microsoft Azure。Google 進入公有雲技術的起點與其他兩家供應商不同。2008 年 4 月,Google 推出了其 Google App Engine 的公開預覽版,這是其雲端服務的第一個組成部分。App Engine 允許開發者在 Google 管理的執行環境中佈署應用程式,包括 PHP、Java、Ruby、Python、Node.js 和 C#,以及 Google 在 2009 年開源的程式語言 Go。
2010 年 5 月,Google Cloud Storage 隨後推出,接著是 Google BigQuery 和其 Prediction API 的預覽版。一年後,也就是 2011 年 10 月,Google Cloud SQL 正式推出。然後,在 2012 年 6 月,Google Compute Engine 的預覽版也正式推出。
從那時起,四年過去了,我們擁有了大多數人認為構成公有雲端服務的核心服務。然而,大多數服務仍處於預覽階段;直到 2013 年,其中許多核心服務才離開預覽階段,變成普遍可用(GA)。這意味著可以安全地大規模執行生產工作負載,更重要的是,可以擁有服務水準協定(SLA),這對於中小企業(SME)和大型企業採用該服務至關重要。所有這些都發生在 Google 推出 Kubernetes 的前一年。
2014 年底,Google 推出了 GKE 的第一個 alpha 版本。
Google Kubernetes Engine
鑑於 Kubernetes 是在 Google 開發的,並且 Google 在執行容器工作負載方面具有豐富的經驗,特別是在 Borg 專案方面,Google 成為首批提供自己的 Kubernetes 服務的公有雲供應商之一也就不足為奇了。在 Kubernetes v1 發布並於 2015 年 7 月移交給 Cloud Native Computing Foundation(CNCF)維護後僅一個月,GKE 服務就變成了普遍可用。
GKE 服務允許您啟動和管理一個透過 GCP 原生運算、儲存和網路服務提供支援的、經 CNCF 認證的 Kubernetes 叢集。它還允許與該平台的監控、身份和存取管理功能進行深度整合。
GKE 的優勢
GKE 提供了一個方便的方式來管理和執行 Kubernetes 叢集,利用 GCP 的強大功能。這使得使用者能夠專注於佈署和管理應用程式,而無需擔心底層基礎設施的複雜性。
準備本地環境
首先,我們需要存取 GCP。要做到這一點,您需要註冊一個帳戶或登入您現有的帳戶。讓我們來學習如何做到這一點。
要註冊 GCP 帳戶,您需要存取 https://cloud.google.com/。在這裡,您應該會看到一個類別似於以下的頁面:
此圖示展示了 Google Cloud 的首頁面。如果您已經使用 Gmail 或 YouTube 等 Google 服務,或者擁有 Android 手機,那麼您已經擁有一個 Google 帳戶。您可以使用此帳戶進行註冊,如圖所示。我的 Google 帳戶已經登入,如螢幕截圖右上角的頭像所示。
目前,Google 提供 300 美元的信用額度,讓您在 90 天內使用。您仍然需要輸入有效的付款方式來利用這些免費信用額度。Google 這樣做是為了確保註冊帳戶的不是自動化機器人,以防止濫用他們提供的信用額度。一旦信用額度用完或過期,您將有機會將您的帳戶升級為付費帳戶。
建立專案
GCP 有一個概念,即資源被啟動到專案中。如果您剛剛註冊了一個帳戶,那麼作為註冊過程的一部分,將為您建立一個「我的第一個專案」。如果您正在使用現有的帳戶,我建議建立一個新專案來啟動您的 GKE 叢集。
要建立新專案,請點選位於頁面左上角 GCP 標誌右側頂部欄中的「選擇」選單。這將顯示您可以存取的所有專案,並允許您建立新專案。請按照以下步驟操作:
- 點選「新建專案」。
- 系統將要求您執行以下操作:
- 為您的新專案命名。
- 選擇要附加專案的組織。
- 選擇位置;這可以是組織或資料夾,用於儲存專案。
- 輸入前一步驟中的詳細資訊後,點選「建立」按鈕。
此圖示展示了建立新專案的過程。
建立專案的重要性
建立新專案有助於組織和管理您的 GCP 資源,使您可以更好地控制和隔離不同的工作負載和應用程式。透過為每個專案分配不同的資源和許可權,您可以確保資源得到有效利用,並降低安全風險。
使用 GCP 的免費信用額度
如果您想利用免費信用額度,請按照以下步驟操作:點選「免費開始」;如果您符合資格,請按照螢幕上的提示進行操作,並仔細閱讀條款和條件。完成註冊後,您將被帶到 GCP 控制檯。或者,如果您已經擁有 GCP 帳戶,您可以直接登入 GCP 控制檯,網址為 https://console.cloud.google.com/。
下一步計畫
在下一章中,我們將繼續探討如何在 GKE 上建立和管理 Kubernetes 叢集,包括組態叢集、管理節點池以及佈署應用程式等內容。這將幫助您更深入地瞭解 GKE 的功能和優勢,並掌握在實際環境中佈署和管理 Kubernetes 叢集的技能。
重點回顧
- GCP 是最新的公有雲供應商,其發展歷程與其他供應商不同。
- GKE 是根據 Kubernetes 的託管服務,提供了一種方便的方式來佈署和管理 Kubernetes 叢集。
- 需要註冊 GCP 帳戶並建立新專案,以便開始使用 GKE。
- 可以利用 GCP 的免費信用額度來試用其服務。