Kubernetes的故障排查一直困擾眾多運維團隊或DevOps,除了Kubernetes本身的複雜性之外,還有Kubernetes的工作負載是動態的原因。本文將介紹1個工具可以幫助你視覺化K8S的網路和流量,以提升你的故障排查效率。
本文來自Rancher Labs
作為領先的多叢集Kubernetes管理平臺,Rancher使運維團隊可以部署、管理和保護企業的Kubernetes叢集。Rancher還為使用者提供了一系列容器網路介面(CNI)選項可供選擇,包括開源專案Calico(https://www.projectcalico.org/)。Calico為Kubernetes Pod提供了原生Layer3路由功能,從而簡化了網路架構,提高了網路效能,並提供了豐富的網路策略模型,可以輕鬆地阻止通訊。因此,只有你指定的流量才能流動。
在部署Kubernetes過程一個常見的問題是獲取對叢集環境的可見性,以有效監控網路和安全問題並進行故障排除。可見性和故障排查(https://www.tigera.io/tigera-products/visibility-and-troubleshooting/ )是我們在Tigera上看到的3大Kubernetes用例之一。這在生產部署中尤其重要,因為當機時間十分寶貴並且分散式應用很難進行故障排查。如果你是平臺團隊的一員,你還需要承受SLA的壓力。如果你是DevOps團隊的一員,則需要啟動生產工作負載。對於兩個團隊來說,共同的目標都是儘快解決問題。
為什麼K8S故障排查如此具有挑戰性?
由於Kubernetes工作負載是動態的,因此連線問題十分難以解決。而常規的網路監控工具是為靜態環境設計的。它們無法理解Kubernetes上下文並且當應用到Kubernetes時並不高效。如果沒有特定的Kubernetes診斷工具,對於平臺團隊而言,進行故障排除會令人沮喪。例如,當pod-to-pod的連線被拒絕時,幾乎無法確定哪個網路安全策略拒絕了流量。當然,你可以手動登入到節點並檢視系統日誌,但這並不可行也無法擴充套件到多個節點。
基於此,你十分需要一種方法來快速查明任何連線或安全問題的根源。或者更好的是,能夠有一些具備預見性的工具,從而避免出現問題。隨著Kubernetes部署規模的擴大,圍繞可見性、監控和日誌記錄的限制可能導致無法診斷的系統故障,從而導致服務中斷並影響客戶滿意度和你的業務。
流量日誌以及流量可見性
對在生產上執行Rancher的使用者,Calico Enterprise(https://www.tigera.io/tigera-products/calico-enterprise/ )網路流量日誌可以為解決Kubernetes網路和安全問題提供了堅實的基礎。例如,流量日誌可用於執行queries以分析來自既定名稱空間或工作負載標籤的所有流量。但是,要有效地對Kubernetes環境進行故障排查,你需要帶有Kubernetes特定資料的流量日誌,例如pod、標籤和名稱空間,以及哪些策略接受或拒絕了連線。
Calico Enterprise Flow Visualizer
Rancher使用者中有很大一部分屬於DevOps團隊。儘管傳統的ITOps具有管理網路和安全策略,但我們看到DevOps團隊正在尋找能夠實現自給自足並加快CI/CD流程的解決方案。對於在生產環境中執行的Rancher使用者,Calico Enterprise包含Flow Visualizer,這是一個功能強大的工具,可簡化連線故障排查。這種方法可以直觀地與網路流量進行互動並對其進行深入研究。DevOps可以使用此工具進行故障排查和策略建立,而ITOps可以使用RBAC建立策略層次結構以實施保護,因此DevOps團隊不會覆蓋任何企業範圍的策略。
防火牆可以為安全團隊建立可見空間
Kubernetes工作負載大量使用網路併產生大量東西流量。如果你在Kubernetes架構中部署常規的防火牆,則將無法視覺化流量以及故障排查。防火牆並不瞭解Kubernetes流量所需的上下文(名稱空間、Pod、標籤、container id等)。這樣就無法對網路問題進行故障排除,進行取證分析或報告安全控制措施是否合規。
為了獲得所需的可見性,Rancher使用者可以部署Calico Enterprise,將基於區域的防火牆規則轉換為Kubernetes網路策略,該策略將叢集劃分為各個區域並應用正確的防火牆規則。然後,可以使用現有的防火牆和防火牆管理器來定義區域並在Kubernetes中建立規則,就像建立所有其他規則一樣。可以將流量穿越區域傳送到安全團隊的安全資訊和事件管理平臺(SIEM),從而為它們提供與常規防火牆相同的可見性,以進行故障排除。
其他Kubernetes故障排除注意事項
對於使用Rancher平臺的平臺、網路、DevOps和安全團隊,Tigera提供了其他可見性和監控工具,可幫助你更快地進行故障排除:
-
可以向所有監控的資料新增閾值和警報。例如,拒絕的流量激增會向你的DevOps團隊或安全運維中心(SOC)發出警報,以進行進一步調查。
-
Filter使你能夠按名稱空間、pod和檢視狀態(例如允許或拒絕的流量)進行深入分析。
-
能夠將日誌儲存在EFK(Elasticsearch、Fluentd和Kibana)堆疊中以供將來訪問。
無論你是剛剛接觸Kubernetes,還是僅僅想簡單瞭解叢集意外行為的“原因”,亦或是處於生產環境中部署了大規模的工作負載狀態,使用正確的工具進行有效的故障排除將有助於你避免出現當機和服務中斷的情況。