如何提高 Kubernetes 環境的可視性

本文是生產級 Kubernetes 系列文章的第二篇,探討了如何在微服務環境中通過流量可視化來降低複雜性並提高安全性。

實現可視化,獲得洞察力

首先,我們來看幾個定義:

  • 可視化 —— 能夠看到或被看到的狀態
  • 洞察 —— 對人或物擁有深刻的理解

StackRox 2020 年的一項調查顯示,75% 的 Kubernetes 用戶認為可視化是一項「必備」能力。 我們也認為可視化是 Kubernetes 環境的一個關鍵要素,畢竟要想弄清其中林林總總的部署專案,談何容易。 然而,在 F5 的《2021 年應用策略現狀》(SOAS) 報告中,95% 的受訪者表示,儘管他們擁有豐富的數據, 但對於保護和發展基礎架構和業務所需的應用的性能、安全性和可用性,他們仍然無法獲取“洞察”。 洞察為何如此重要? 如何獲得洞察? 

洞察可説明您:

  • 檢測漏洞和潛在攻擊向量,增強安全性與合規性
  • 先於客戶發現問題,減少中斷和停機時間
  • 查找應用問題的根源,提高故障排除效率
  • 確認流量被正確地路由
  • 準確瞭解 Kubernetes 環境中的運行專案及其是否得到合理配置和保護
  • 根據延遲和性能歷史記錄確定您是否使用了適當的資源數量
  • 基於過去的流量模式預測季節性需求
  • 根據回應時間衡量性能,並根據服務等級協定 (SLA) 追蹤性能,同時用作預警系統,防止問題影響用戶體驗

要獲得洞察力,您需要兩種類型的可視化數據:實時數據和歷史數據。 實時數據可説明您診斷當前問題的來源,而歷史數據可説明您辨別正常與異常。 這兩種類型的可視化來源相結合,可提供關於應用和 Kubernetes 性能的關鍵洞察。 

與其他技術投資一樣,您還需要制定策略來幫助您實現相關收益。 SOAS 報告還指出,出於企業多方面的原因,例如招聘和員工發展、戰略和流程以及數據用途、使用情形和使用人員的分歧,人們未能獲得寶貴的洞察。 調查結果包括以下三方面:

  • 相關技能 —— 高素質技術專業人員短缺已經不是什麼秘密,47% 的受訪者表示,他們很難招到想要的人才。
  • 數據共享計劃 —— 只有 12% 的受訪者構建了向業務決策者報告數據的流程和策略,以便讓他們瞭解擁有彈性的技術(或缺乏彈性的技術)對業務的影響。
  • 可視化的目的 —— 大多數受訪者被動地使用遙測技術(即進行故障排除),而只有 24% 的受訪者主動使用數據和洞察監控潛在的性能下降問題,16% 的受訪者主動跟蹤 SLA 性能。

下文將重點探討技術方面的洞察。 後續我們將發佈有關戰略、流程及其他主題的文章,敬請關注。

NGINX 如何助您一臂之力

我們知道大多數 Kubernetes 部署環境 已經有一個監控工具了,不再需要其他工具了。 為此,我們提供了NGINX Plus API,既可幫您輕鬆匯出指標數據,也可與 OpenTracing 以及 Grafana  Prometheus  等熱門工具相整合,從而為您提供集群內性能的全面洞察。 通過深度跟蹤,您可以有針對性地獲得應用性能和可用性的洞察,從而瞭解請求在微服務應用中的處理過程。 

請繼續閱讀,看看我們如何幫助您解決兩個常見問題:

如欲查看該技術的實際應用,請觀看下方 NGINX 和 Grafana 專家進行的直播演示和問答環節。 他們演示了如何實時監控關鍵負載均衡和性能指標、將指標導出到 Prometheus,並創立了一個帶有累積性能檢視的 Grafana 儀錶盤。

問題1:應用運行很慢

您有沒有想過可能遭到了 DDOS 攻擊? 使用者是否報告了網站的錯誤? 您只有在找到問題所在之後才能著手解決問題。 

  • 借助 NGINX Ingress Controller 進行實時監控
    基於 NGINX Plus 的 NGINX Ingress Controller 提供了一個即時活動監控儀錶盤(由 NGINX Plus API 提供支援),可顯示數百個關鍵負載和性能指標。 儀錶盤可以提供細粒度資訊,甚至細化到單個 pod 級別,可説明您快速、輕鬆地衡量應用響應時間,並診斷問題的來源。 如果您的 Kubernetes 環境不斷增長,那麼每個新增的 NGINX Ingress Controller 實例會自動獲得新儀錶盤。 
    • 例如,HTTP 上游 (HTTP Upstreams) 選項卡上的兩列直觀地顯示了應用和基礎架構狀態:
    • 請求 —— 如果每秒請求數 (Req/s) 降至給定應用標準以下(例如,每秒 5 個請求,而正常請求數為40),則表示 Ingress Controller 或應用的配置可能不正確。
    • 回應時間 —— o 如果回應時間為 10 毫秒 (ms) 或更少,則表示運行狀況良好。 延遲超過 30-40 毫秒表示上游應用出現問題。
improve-Kubernetes-visibility_dashboard
  • NGINX Ingress Controller 的基本狀態
    配合使用NGINX 開源版,NGINX Ingress Controller 提供了一個狀態頁面,報告八個基本指標。
  • NGINX Service Mesh 的 OpenTracing
    NGINX Service Mesh 通過 NGINX OpenTracing 模組支援 OpenTracing。 在撰寫本文時,NGINX OpenTracing 模組支援 DataDog、LightStep、Jaeger 和 Zipkin。

問題2:集群或平臺耗盡資源

出現了 HTTP 錯誤? 503 和 40x 錯誤表示存在資源問題,而 502 表示配置變更不成功。 您可以使用歷史數據來診斷可能會出現資源耗盡的地方。 

  • 借助 NGINX Ingress Controller 進行日誌記錄
    診斷網路問題的第一步是查看 NGINX Ingress Controller 日誌,其中每個日誌條目都使用相關的Kubernetes 服務註釋。 日誌的錯誤條目會標識相關服務。 日誌包含了流經 Ingress Controller 的所有流量的詳細資訊,包括時間戳、源 IP 位址和響應狀態碼。 您還可以將日誌導出到流行的聚合器中,例如DataDog、Grafana 和 Splunk。
  • Prometheus 指標
    NGINX Ingress Controller 最受歡迎的特性之一是其不斷擴展的 Prometheus 指標清單,其中包含網路性能和Ingress Controller 流量指標 。 基於 NGINX Plus 的 NGINX Ingress Controller 能夠匯出一系列相關指標,涵蓋連接、緩存、由 NGINX worker 組(在記憶體區共用數據)處理的  HTTP 和 TCP/UDP 流量、由後端伺服器組處理的 HTTP 和 TCP/UDP 流量等。 
    • NGINX Service Mesh 部署了一個 Prometheus 伺服器,該伺服器使用 NGINX Plus API 從 NGINX Service Mesh sidecar 和 NGINX Ingress Controller pod 獲取指標。 如果您希望使用現有的Prometheus 部署,我們還提供 scrape 配置,以供您添加到 Prometheus 配置檔。
  • Grafana 儀錶盤
    我們為 NGINX Ingress Controller 和 NGINX Service Mesh 提供了官方 Grafana 儀錶盤,能夠將Prometheus Exporter 暴露出來的指標數據可視化。 使用者非常重視數據的粒度,包括精確到毫秒的詳細資訊、逐日覆蓋和流量峰值。 例如,NGINX Service Mesh 儀錶盤可以顯示任何一個服務或 pod 的流量以及被監控的活動 pod 的數量,以標示 pod 的運行負載情況。