下周六,深圳,闊別已久的線下技術沙龍要和你見面啦!
現場有Rancher Labs研發經理demo剛剛發布的Rancher 2.3中的Istio、Windows容器、集群模板等功能及使用,還有k3s首次線下workshop,由Rancher Labs資深架構師帶你一起玩轉k3s!還有長城證券的運維負責人分享數字化浪潮下傳統金融IT的轉型,
訪問鏈接即可了解詳情及報名啦!

諸如容器、Kubernetes等云原生架構和技術的成熟推動了服務網格架構的極速增長以及廣泛采用,盡管云原生環境可以為企業帶來一系列好處,但是其復雜性也對負責開發維護這類系統的人員,如軟體開發人員、網路運維人員、基礎架構工程師以及CIO、CTO等帶來了重大挑戰,
服務網格框架能夠為跨不同云原生環境的應用程式整合一致的服務和網路管理能力,它還極大地加快了DevOps實踐的行程,正緣于此,服務網格近年來可謂是發展迅猛,云原生普及的加快,要求擁有云原生應用程式的工程團隊必須熟悉服務網格功能,以判斷該技術將來是否能為企業提供價值,
什么是服務網格?
服務網格可以連接、保護、控制以及監控在編排平臺上的服務,“服務網格”這一術語本身用于分布式應用程式中服務之間的一組搭接網路連接,也適用于管理該組連接服務的一系列工具,如果你有兩個通過網路連接進行互動的微服務,那就意味著你有了一個服務網格,下圖是一個十分簡單的示例,一個網格和兩個服務:

更有可能的是,由于在環境中微服務的數量會繼續增長,你的服務網格會如下圖所示:

隨著云環境擴展到混合云和多云部署,開發人員將會使用微服務來加速開發并且確保在多個容器和分布式云資源中的的可移植性,隨著微服務生態系統的復雜性增長,我們需要高效且智能地管理它,并且深入了解微服務如何互動以及保護微服務之間的通信,
什么是Istio?
如果你已經聽說了服務網格,那么你一定順帶聽說了Istio,Istio是一個開源的服務網格,它可以部署在已有的云原生應用程式上,它還具有類似于平臺的功能——可以將集成到日志平臺、遙測或策略系統中,策略集成使得Istio在創建一個統一的方法來保護、連接以及監控既定環境中的微服務中扮演一個安全工具的角色,當泛指“Istio服務網格”時,通常是指Istio中的一系列工具,而特指“某個Istio 服務網格”時則表明由Istio安裝管理的指定應用程式集群,Istio的許多CRD允許對應用程式網路層的行為進行編程配置(通過使用Kubernetes API),其中應用程式是相互依賴的微服務集,Istio在某種程度上可以稱為當今云原生堆疊中服務網格的同義詞,因為它的功能最豐富、最標準化,
我是否需要一個服務網格?
盡管服務網格的采用率可能會持續快速增長,特別是當功能設定和類似Istio的管理工具進一步完善之后,但并不是每個云原生環境都需要服務網格,所以你如何知道一個服務是否適合你的企業或者環境呢?如果你需要解決下面所描述的一個或多個需求或問題的方案,那么你應該考慮部署一個服務網格:
-
你在基于分布式微服務的應用程式中遇到性能問題
-
你需要為所有微服務收集并交付一致的請求和連接指標
-
你想直接默認在線加密設定,而無需直接管理TLS證書
-
你需要比Kubernetes網路策略提供的更細粒度的解決方案進行服務到服務的控制
-
你想使用金絲雀發布和應用程式API多版本支持進行自動release
-
你想無需修改應用程式就可以添加用戶的身份驗證和授權認證資訊
另一方面,如果在你的堆疊中不需要服務網格,那么你需要做一些權衡,考慮到這些環境的復雜性,部署一個服務網格(包括Istio)需要大量的遷移作業和運維成本,如果你的微服務部署數量不會增長,或者如果有其他解決方案可以滿足你內部的HTTP請求路由的需求,或者如果你已經有了一個可管理且高效的解決方案可以解決上述的關鍵需求,那么此刻服務網格對你來說真的不是一個最佳選擇,
但是如果服務網格繼續極速被廣泛采用,為支持它而開發的功能生態系統將會繼續擴展,這種增長將提升可管理性和功能性,以便將來DevOps團隊可以更加輕松地訪問更強大的服務網格工具,而不必擔心將新的基礎架構層部署到云原生堆疊中而出現棘手的問題或花費很高的成本,
Istio作業原理
Istio組件被分為兩部分——控制平面和資料平面,控制平面是指管理配置和監控資料平面的服務,資料平面由作為sidecar由在應用程式pod中的智能代理(proxy)組成,這是Kubernetes物件模型中最小的可部署物件,這些Istio proxy有助于控制和監控微服務間的網路連接,從控制平面接收路由和策略規則,然后資料平面報告回連接處理遙測,

通過創建Kubernetes資源來配置Istio服務網格,此外,有許多Kubernetes CRD可以映射到Istio各種功能上,接下來,我們會討論更多關于控制和資料平面的作用,但在此之前我們先了解關于Istio的潛在能力,以及它的不足,
潛力與不足
Istio通過其可動態配置代理的網格提供了一系列用于處理和控制網路連接的特性,但這些功能配置繁重并且擁有陡峭的學習曲線,并且有時把已有的應用程式遷移到Istio架構時依舊會出現一些常見的問題,盡管這些架構已經是Kubernetes原生的微服務,
此外,Istio缺乏對如何將用戶提供的配置轉換為Envoy路由的了解,Envoy是作為服務網格中服務的入站和出站流量的中介開發的一種高性能的代理,是由來自共享出行服務公司Lyft的開發人員創建的,可以用于從單體架構轉變為服務網格架構,其他在使用中的問題還包括部署和服務資源配置要求所需的學習曲線、在打開mTLS時中斷Kubernetes readiness和liveness探針以及使用沒有ClusterIP的Kubernetes服務或繞開Kubernetes服務發現流程的服務,
Istio的優勢在于可以讓你在不修改微服務源代碼的情況之下,很輕松地給微服務加上諸如負載均衡、身份驗證、監控等等的功能,而且目前它正在快速發展迭代,頻繁發布新版本,并且積極征求用戶反饋,盡管目前Envoy還有很多局限,但是隨著Istio持續發展,它也會積極開發和完善自己的功能,
配置控制平面
在Kubernetes集群中,一個典型的Istio部署應該包含以下服務:
Pilot,在Istio網路自定義資源中集合流量管理規范配置,并將該配置交付到istio-proxy sidecar,
Mixer,用于處理由proxy sidecar生成的請求指標的遙測,并將其發送到已配置完成的后端,并執行授權策略,如果開啟了策略檢查(Istio 1.1中默認關閉),proxy sidecar將會連接到Mixer以確認連接是被允許的,但是,這個方法會稍微增加網路延遲,
Citadel,這個是Istio的公鑰基礎設施(PKI)服務,它可以生成、輪換和吊銷用于身份驗證的客戶端TLS證書,
Galley,它是大多數Istio CRD的Kubernetes controller,使用戶可以更改自定義資源并將內容分配到其他Istio服務中,
資料平面
資料平面由Envoy服務代理提供支持,該代理使用Istio擴展構建,Proxy會攔截到pod服務埠的傳入流量,并默認攔截來自pod其他容器的所有創出TCP流量,在大部分情況下,無需更改應用程式代碼,僅對應用程式的Kubernetes部署和服務資源規范進行較小的更改,proxy sidecar 就可以在pod中運行,Proxy sidecar的配置由在Istio 控制面板中的服務進行動態管理,
最終,也許會在某個時間點你需要部署服務網格以確保你的云原生環境完全正常運行并得到充分保護,因此,熟悉有關服務網格的基礎只是將可以幫助你做出準確的判斷——什么時候應該部署服務網格以及應該如何部署,如果你正在計劃在Kubernetes和其他容器平臺上進行擴展計劃,那么你通過了解Istio的設計和功能以及它如何降低容器化微服務和云原生環境的固有復雜性,你可以知道Istio是一個功能強大且快速改進的解決方案并且正在積極增強彈性伸縮能力、安全性以及管理的簡易性,
如果企業繼續采用云原生和分布式架構,那么Istio的服務網格功能以及底層基礎架構的網路控制和Kubernetes的安全實踐將會極大程度解放DevOps團隊在彈性伸縮和管理應用程式基礎架構上的壓力,
在10月9日GA的Rancher 2.3版本中,正式集成了Istio,極大簡化了Istio的安裝和配置,你只需要在UI中使用工具選單,即可啟動Istio,Rancher中現已內置支持:
-
用于流量和遙測可視化的Kiali儀表板
-
用于追蹤的Jaeger
-
用于監控和可觀察性的Prometheus和Grafana
如果你還想了解更多關于Rancher 2.3的新功能,歡迎參加我們在下周六(10月26日)舉辦的技術沙龍,坐標深圳,屆時將有Rancher Labs大中華區的研發經理現場介紹并demo Rancher 2.3的新功能,點擊此處,趕緊報名啦!
歡迎添加微信助手(rancher2),進官方技術群,了解更多Kubernetes使用攻略
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/60146.html
標籤:其他
