什麼是服務網格以及它與 Kubernetes 的比較
服務網格(例如開源專案 Istio)是一種控制應用程式不同部分如何共享資料的方法。與其他用於管理此通訊的系統相比,服務網格是直接構建到應用程式中的專用基礎設施層。此可見的基礎設施層可以記錄應用程式的不同部分如何(或不好地)互動,從而更容易最佳化通訊並在應用程式增長時避免停機。
隨著越來越多的組織採用微服務架構,管理這些服務之間複雜的互動變得越來越具有挑戰性。服務網格和 Kubernetes 是以不同方式解決此問題的兩種解決方案。本文將解釋什麼是服務網格以及它與 Kubernetes 的比較。
什麼是服務網格?
服務網格是一個專用的基礎設施層,用於管理微服務架構中服務之間的通訊。它包括諸如流量管理、服務發現、負載均衡、安全性和可觀察性等功能。服務網格透過在每個服務例項旁邊插入一個代理(也稱為 sidecar)來實現這一點,該代理管理服務之間的通訊。
服務網格實現為一組與應用程式程式碼一起部署的代理。這些代理充當中介,攔截和管理服務之間所有傳入和傳出的流量。代理通常使用開源專案(如 Envoy、Linkerd 或 Istio)來實現。
使用服務網格,您可以將應用程式的業務邏輯與可觀察性和網路和安全策略分離。您可以使用服務網格來連線、保護和監控您的微服務。
連線 − 服務網格允許服務相互發現和通訊。它提供了更有效的服務/端點之間流量和 API 呼叫的路由。
安全 − 服務網格提供服務之間可靠的通訊。服務網格可用於實施允許或拒絕連線的策略。例如,您可以配置系統以阻止在開發環境中執行的客戶端服務訪問生產服務。
監控 服務網格使您的微服務系統可見。服務網格可以與現有的監控技術(如 Prometheus 和 Jaeger)配合使用。
這些關鍵功能提供了對構成複雜雲原生應用程式的分散式微服務完整網路的控制。
這些關鍵功能提供了對構成複雜雲原生應用程式的分散式微服務完整網路的控制。
服務網格如何工作?
服務網格是用於管理微服務架構中服務之間通訊的專用基礎設施層。它透過提供高階流量管理功能(如負載均衡、服務發現、流量加密和可觀察性)來提高微服務的效能和可靠性。
服務網格構建為一組與應用程式程式碼一起執行的代理。這些代理充當中介,攔截和管理服務之間所有傳入和傳出的流量。代理通常使用開源專案(如 Envoy、Linkerd 或 Istio)構建。
服務網格和 Kubernetes 如何互動?
如果您只是部署一個沒有服務網格的基本 Kubernetes 叢集,您將遇到以下問題:
沒有服務間安全性。
跟蹤服務延遲問題是一項艱鉅的任務。
負載均衡受到限制。
如您所見,服務網格填補了 Kubernetes 中的空白。換句話說,服務網格是 Kubernetes 的附加元件。
誰在構建服務網格解決方案?
三大服務網格提供商是:
Istio
Consul
Linkerd
讓我們更深入地瞭解一下每個。
Istio
Istio 是一個基於 Kubernetes 的平臺。Lyft 建立了 Istio,現在得到了 Google、IBM 和 Microsoft 的投資和支援。
Istio 使用 sidecar 載入的代理來分離其資料和控制平面。sidecar 儲存資訊以避免每次呼叫都必須返回到控制飛機。控制平面由 Kubernetes 叢集作為 Pod 管理。這種配置在服務網格的任何區域中單個 Pod 發生故障時提供了更高的彈性。
Consul
Consul Consul 是一個功能齊全的服務管理框架。Consul 最初是作為管理基於 Nomad 的服務的機制而建立的,現在已擴充套件到包括各種不同的資料中心和容器管理技術,包括 Kubernetes。
Linkerd
Linkerd 是另一個流行的服務網格,它執行在 Kubernetes 之上,並且由於 v2 中的重寫,其架構與 Istio 的架構非常相似。區別在於 Linkerd 優先考慮簡單性。
服務網格與 Kubernetes 的比較如何?
雖然 Kubernetes 是一個用於管理容器化應用程式的絕佳解決方案,但它沒有提供與服務網格相同級別的網路和通訊功能。儘管 Kubernetes 包括一些網路功能,例如負載均衡和服務發現,但它沒有提供與服務網格相同級別的控制和靈活性。
另一方面,服務網格提供了一個專門的基礎設施層來管理服務之間的通訊,並具有高階功能,如流量管理、負載均衡、服務發現和安全。這使開發人員能夠新增複雜的網路功能,而無需更改底層應用程式程式碼。
Kubernetes 和服務網格之間的另一個重要區別是,Kubernetes 專注於容器編排,而服務網格專注於服務之間的通訊。Kubernetes 充當部署、擴充套件和管理容器化應用程式的平臺,而服務網格充當管理這些應用程式之間通訊的專用層。
後續步驟
服務網格不是可以獨立設定和執行的解決方案。您的 DevOps 策略必須包含服務網格。您應該為後續步驟實施以下內容:
您應該在雲中執行解決方案。
您的解決方案中應該使用容器(例如 Docker)。
要管理您在雲上的容器,您應該使用 Kubernetes。
完成這三個步驟後,您現在就擁有了執行服務網格的基礎。Istio 在 AWS、Microsoft Azure、Google Cloud 和 IBM 上更易於設定。原因是每個供應商都在投資 Istio 的開發。此外,圍繞 Istio 的 DevOps 社群比競爭技術更強大。話雖如此,服務網格市場仍處於起步階段。其他具有更簡單設定和更多功能的裝置有很大的進入市場空間。
結論
最後,服務網格是用於管理分散式系統中服務之間通訊的有效工具。雖然 Kubernetes 是一個強大的容器編排平臺,但它缺乏服務網格的網路和通訊功能。服務網格透過提供一個專門的基礎設施層來協調服務之間的通訊,使開發人員能夠輕鬆地整合複雜的網路功能,而無需修改底層應用程式程式碼。無論您是在開發微服務架構還是大型分散式系統,服務網格都可以成為管理應用程式網路基礎設施的絕佳工具。