」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 使用 Kubernetes、Helm 和 Ingress 部署監控堆疊

使用 Kubernetes、Helm 和 Ingress 部署監控堆疊

發佈於2024-11-08
瀏覽:972

Deploying a Monitoring Stack with Kubernetes, Helm, and Ingress

觀察和管理 Kubernetes 叢集的效能對於維護應用程式運作狀況、識別問題和確保高可用性至關重要。我將引導您使用 kubectl 和 Helm 設定全面的監控解決方案,將 Grafana、Loki 和 Prometheus 部署到叢集,以及設定 Ingress 以進行外部存取。

我們將介紹以下關鍵步驟:

  1. 應用 Kubernetes 命名空間進行監控。
  2. 安裝 Helm 並設定必要的儲存庫。
  3. 使用 Helm 部署 Loki、Prometheus 和 Grafana。
  4. 應用 Ingress 規則向外部公開服務。

先決條件
在開始之前,請確保您具備以下條件:

  1. 配置了 kubectl 的 Kubernetes 叢集。
  2. Helm 安裝在您的本機電腦上。
  3. 應用 YAML 設定和安裝圖表的正確存取權限。

第 1 步:建立監控命名空間

命名空間可協助您邏輯地劃分和組織 Kubernetes 資源。為了避免衝突並保持監控資源獨立,我們將為監控工具建立專用的命名空間。

1。應用程式監控命名空間:將以下內容儲存至monitoring-namespace.yml檔案中:

api版本:v1
種類:命名空間
元資料:
名稱:監控
標籤:
app.kubernetes.io/name: 監控
app.kubernetes.io/instance:監控

2.使用 kubectl 應用程式命名空間:

kubectl apply -f reporting-namespace.yml

此指令在 Kubernetes 叢集中建立一個名為「monitoring」的新命名空間。

第 2 步:安裝 Helm 並新增 Grafana 儲存庫
Helm 是 Kubernetes 套件管理器,可以更輕鬆地部署 Grafana、Loki 和 Prometheus 等複雜應用程式。以下是如何安裝 Helm 並設定必要的儲存庫。

  1. 安裝 Helm(如果尚未安裝):

sudo snap install helm --classic

此指令使用 Snap(Linux 的套件管理系統)安裝 Helm。

  1. 新增 Grafana Helm 圖表儲存庫:

helm 倉庫新增 grafana https://grafana.github.io/helm-charts

  1. 更新 Helm 儲存庫:

helm 倉庫更新

這可確保 Helm 擁有 Grafana 儲存庫中的最新圖表。

第 3 步:使用 Helm 部署 Loki、Prometheus 和 Grafana

現在 Helm 已安裝並配置完畢,我們將使用 Grafana Helm 圖表部署 Loki、Prometheus 和 Grafana。

1。執行Helm安裝指令:

helm 升級 --install loki --namespace=monitoring grafana/loki-stack \
--set grafana.enabled=true,prometheus.enabled=true,prometheus.alertmanager.persistentVolume.enabled=false,prometheus.server.persistentVolume.enabled=false,loki.persistence.enabled=truekiClass.persistence. ,loki.persistence.size=100Gi --set nodeSelector.name=node.kubernetes.io/description=all_product

A:Grafana:**這將在 Helm 圖表中啟用監控儀表板工具 Grafana。
**B:Prometheus:**啟用 Prometheus 來收集指標,同時停用 Alertmanager 和 Prometheus 伺服器的持久性磁碟區以簡化儲存配置。
**C: Loki:
Loki,日誌聚合工具,使用 gp2 儲存類別啟用 100Gi 的持久性磁碟區儲存。

--install 標誌確保在先前未部署堆疊的情況下安裝該堆疊。 --upgrade 標誌將堆疊更新至最新版本(如果已安裝)。

2.驗證安裝:安裝成功後,檢查監控命名空間中運行的pod的狀態:

kubectl get pods -n 監控

您應該會看到 Grafana、Prometheus、Loki 和 Promtail(將日誌傳送到 Loki)的 pod。

第 4 步:設定外部存取的入口

要從叢集外部存取 Grafana、Prometheus 或 Loki,您需要配置 Ingress 資源。這允許外部 HTTP/S 存取監控服務。

*1。建立 Ingress 資源:將下列範例儲存至 monitoring-ingress.yml 檔案:
*

api版本:networking.k8s.io/v1
種類:入口
元資料:
名稱:監控入口
命名空間:監控
註:
kubernetes.io/ingress.class: "nginx"
cert-manager.io/cluster-issuer:letencrypt
規格:
tls:
- 主持人:

- your-domain.com
秘密名稱:證書名稱
規則:
- 主機:your-domain.com
http:
路徑:
- 小路: /
路徑類型:前綴
後端:
服務:
名稱:loki-grafana
港口:
數量:80

此 Ingress 配置在網域名稱 {your-domain.com} 下為 Grafana、Prometheus 和 Loki 設定路由。您需要將 your-domain.com 替換為您的實際網域,並配置 DNS 以指向叢集的外部 IP。

2.申請Ingress資源:

kubectl apply -f reporting-ingress.yml

一旦應用,入口控制器將根據主機名稱將流量路由到適當的服務。

  1. 驗證 Ingress 設定:檢查 Ingress 資源的狀態以確保其配置正確:

kubectl get ingress -n 監控

確保您的 ADDRESS 欄位具有外部 IP,以便外部可以存取服務。

第 5 步:存取監控儀表板

正確配置 Ingress 並且 DNS 指向您的叢集後,您就可以存取 Grafana、Prometheus 和 Loki。

結論

只需幾個命令,您就可以在 Kubernetes 叢集上使用 Helm 成功部署完整的監控堆疊。透過利用 Helm 圖表,您可以簡化 Grafana、Loki 和 Prometheus 等複雜應用程式的部署,同時也整合 Ingress 以方便存取。您現在擁有強大的可觀察性設置,可讓您即時監控日誌和指標,幫助您更有效地管理和優化 Kubernetes 應用程式。

這種基於 Helm 的部署可確保可擴展性並簡化升級或配置更改,從而更輕鬆地管理生產環境中的可觀察性。

版本聲明 本文轉載於:https://dev.to/seewhy/deploying-a-monitoring-stack-with-kubernetes-helm-and-ingress-cp5?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 如何使用“ JSON”軟件包解析JSON陣列?
    如何使用“ JSON”軟件包解析JSON陣列?
    parsing JSON與JSON軟件包 QUALDALS:考慮以下go代碼:字符串 } func main(){ datajson:=`[“ 1”,“ 2”,“ 3”]`` arr:= jsontype {} 摘要:= = json.unmarshal([] byte(...
    程式設計 發佈於2025-07-14
  • 如何將MySQL數據庫添加到Visual Studio 2012中的數據源對話框中?
    如何將MySQL數據庫添加到Visual Studio 2012中的數據源對話框中?
    在Visual Studio 2012 儘管已安裝了MySQL Connector v.6.5.4,但無法將MySQL數據庫添加到實體框架的“ DataSource對話框”中。為了解決這一問題,至關重要的是要了解MySQL連接器v.6.5.5及以後的6.6.x版本將提供MySQL的官方Visual...
    程式設計 發佈於2025-07-14
  • Spark DataFrame添加常量列的妙招
    Spark DataFrame添加常量列的妙招
    在Spark Dataframe ,將常數列添加到Spark DataFrame,該列具有適用於所有行的任意值的Spark DataFrame,可以通過多種方式實現。使用文字值(SPARK 1.3)在嘗試提供直接值時,用於此問題時,旨在為此目的的column方法可能會導致錯誤。 df.withCo...
    程式設計 發佈於2025-07-14
  • PHP未來:適應與創新
    PHP未來:適應與創新
    PHP的未來將通過適應新技術趨勢和引入創新特性來實現:1)適應云計算、容器化和微服務架構,支持Docker和Kubernetes;2)引入JIT編譯器和枚舉類型,提升性能和數據處理效率;3)持續優化性能和推廣最佳實踐。 引言在編程世界中,PHP一直是網頁開發的中流砥柱。作為一個從1994年就開始發展...
    程式設計 發佈於2025-07-14
  • 如何使用PHP從XML文件中有效地檢索屬性值?
    如何使用PHP從XML文件中有效地檢索屬性值?
    從php PHP陷入困境。 使用simplexmlelement :: attributes()函數提供了簡單的解決方案。此函數可訪問對XML元素作為關聯數組的屬性: - > attributes()為$ attributeName => $ attributeValue){ echo...
    程式設計 發佈於2025-07-14
  • 如何從Google API中檢索最新的jQuery庫?
    如何從Google API中檢索最新的jQuery庫?
    從Google APIS 問題中提供的jQuery URL是版本1.2.6。對於檢索最新版本,以前有一種使用特定版本編號的替代方法,它是使用以下語法:獲取最新版本:未壓縮)While these legacy URLs still remain in use, it is recommended ...
    程式設計 發佈於2025-07-14
  • PHP陣列鍵值異常:了解07和08的好奇情況
    PHP陣列鍵值異常:了解07和08的好奇情況
    PHP數組鍵值問題,使用07&08 在給定數月的數組中,鍵值07和08呈現令人困惑的行為時,就會出現一個不尋常的問題。運行print_r($月)返回意外結果:鍵“ 07”丟失,而鍵“ 08”分配給了9月的值。 此問題源於PHP對領先零的解釋。當一個數字帶有0(例如07或08)的前綴時,PHP將...
    程式設計 發佈於2025-07-14
  • 如何避免Go語言切片時的內存洩漏?
    如何避免Go語言切片時的內存洩漏?
    ,a [j:] ...雖然通常有效,但如果使用指針,可能會導致內存洩漏。這是因為原始的備份陣列保持完整,這意味著新切片外部指針引用的任何對象仍然可能佔據內存。 copy(a [i:] 對於k,n:= len(a)-j i,len(a); k
    程式設計 發佈於2025-07-14
  • 查找當前執行JavaScript的腳本元素方法
    查找當前執行JavaScript的腳本元素方法
    如何引用當前執行腳本的腳本元素在某些方案中理解問題在某些方案中,開發人員可能需要將其他腳本動態加載其他腳本。但是,如果Head Element尚未完全渲染,則使用document.getElementsbytagname('head')[0] .appendChild(v)的常規方...
    程式設計 發佈於2025-07-14
  • 如何在其容器中為DIV創建平滑的左右CSS動畫?
    如何在其容器中為DIV創建平滑的左右CSS動畫?
    通用CSS動畫,用於左右運動 ,我們將探索創建一個通用的CSS動畫,以向左和右移動DIV,從而到達其容器的邊緣。該動畫可以應用於具有絕對定位的任何div,無論其未知長度如何。 問題:使用左直接導致瞬時消失 更加流暢的解決方案:混合轉換和左 [並實現平穩的,線性的運動,我們介紹了線性的轉換。...
    程式設計 發佈於2025-07-14
  • PHP SimpleXML解析帶命名空間冒號的XML方法
    PHP SimpleXML解析帶命名空間冒號的XML方法
    在php 很少,請使用該限制很大,很少有很高。例如:這種技術可確保可以通過遍歷XML樹和使用兒童()方法()方法的XML樹和切換名稱空間來訪問名稱空間內的元素。
    程式設計 發佈於2025-07-14
  • 為什麼我在Silverlight Linq查詢中獲得“無法找到查詢模式的實現”錯誤?
    為什麼我在Silverlight Linq查詢中獲得“無法找到查詢模式的實現”錯誤?
    查詢模式實現缺失:解決“無法找到”錯誤在銀光應用程序中,嘗試使用LINQ建立錯誤的數據庫連接的嘗試,無法找到以查詢模式的實現。 ”當省略LINQ名稱空間或查詢類型缺少IEnumerable 實現時,通常會發生此錯誤。 解決問題來驗證該類型的質量是至關重要的。在此特定實例中,tblpersoon可能...
    程式設計 發佈於2025-07-14
  • 可以在純CS中將多個粘性元素彼此堆疊在一起嗎?
    可以在純CS中將多個粘性元素彼此堆疊在一起嗎?
    [2这里: https://webthemez.com/demo/sticky-multi-header-scroll/index.html </main> <section> { display:grid; grid-template-...
    程式設計 發佈於2025-07-14
  • 如何從Python中的字符串中刪除表情符號:固定常見錯誤的初學者指南?
    如何從Python中的字符串中刪除表情符號:固定常見錯誤的初學者指南?
    從python import codecs import codecs import codecs 導入 text = codecs.decode('這狗\ u0001f602'.encode('utf-8'),'utf-8') 印刷(文字)#帶有...
    程式設計 發佈於2025-07-14
  • Python環境變量的訪問與管理方法
    Python環境變量的訪問與管理方法
    Accessing Environment Variables in PythonTo access environment variables in Python, utilize the os.environ object, which represents a mapping of envir...
    程式設計 發佈於2025-07-14

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3