日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Istio服务网格实践指南 学习笔记(二) Istio架构

發(fā)布時(shí)間:2023/12/31 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Istio服务网格实践指南 学习笔记(二) Istio架构 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

個(gè)人學(xué)習(xí)Istio系列? 學(xué)習(xí)筆記 Istio架構(gòu)篇

本篇部分參考原書(shū) https://jimmysong.io/istio-handbook/ 僅為個(gè)人學(xué)習(xí)筆記


這幅圖中描述了以下內(nèi)容:

1.Istio 可以在虛擬機(jī)和容器中運(yùn)行

2.Istio 的組成

??? Pilot:服務(wù)發(fā)現(xiàn)、流量管理

??? Mixer:訪問(wèn)控制、遙測(cè)

??? Citadel:終端用戶認(rèn)證、流量加密

3.Service mesh 關(guān)注的方面

??? 可觀察性

??? 安全性

??? 可運(yùn)維性

4.Istio 是可定制可擴(kuò)展的,組建是可拔插的

5.Istio 作為控制平面,在每個(gè)服務(wù)中注入一個(gè) Envoy 代理以 Sidecar 形式運(yùn)行來(lái)攔截所有進(jìn)出服務(wù)的流量,同時(shí)對(duì)流量加以控制

6.應(yīng)用程序應(yīng)該關(guān)注于業(yè)務(wù)邏輯(這才能生錢),非功能性需求交給 Service Mesh


為什么要使用Istio

Istio 提供一種簡(jiǎn)單的方式來(lái)為已部署的服務(wù)建立網(wǎng)絡(luò),該網(wǎng)絡(luò)具有負(fù)載均衡、服務(wù)間認(rèn)證、監(jiān)控等功能,而不需要對(duì)服務(wù)的代碼做任何改動(dòng)。想要讓服務(wù)支持 Istio,只需要在您的環(huán)境中部署一個(gè)特殊的 sidecar 代理,使用 Istio 控制平面功能配置和管理代理,攔截微服務(wù)之間的所有網(wǎng)絡(luò)通信:

1.HTTP、gRPC、WebSocket 和 TCP 流量的自動(dòng)負(fù)載均衡

2.通過(guò)豐富的路由規(guī)則、重試、故障轉(zhuǎn)移和故障注入,可以對(duì)流量行為進(jìn)行細(xì)粒度控制

3.可插入的策略層和配置 API,支持訪問(wèn)控制、速率限制和配額

4.對(duì)出入集群入口和出口中所有流量的自動(dòng)度量指標(biāo)、日志記錄和跟蹤

5.通過(guò)強(qiáng)大的基于身份的驗(yàn)證和授權(quán),在集群中實(shí)現(xiàn)安全的服務(wù)間通信。

Istio 旨在實(shí)現(xiàn)可擴(kuò)展性,滿足各種部署需求。

?

Istio核心功能

流量管理

通過(guò)簡(jiǎn)單的規(guī)則配置和流量路由,您可以控制服務(wù)之間的流量和 API 調(diào)用。Istio 簡(jiǎn)化了斷路器、超時(shí)和重試等服務(wù)級(jí)別屬性的配置,并且可以輕松設(shè)置 A/B測(cè)試、金絲雀部署和基于百分比的流量分割的分階段部署等重要任務(wù)

通過(guò)更好地了解您的流量和開(kāi)箱即用的故障恢復(fù)功能,您可以在問(wèn)題出現(xiàn)之前先發(fā)現(xiàn)問(wèn)題,使調(diào)用更可靠,并且使您的網(wǎng)絡(luò)更加強(qiáng)大——無(wú)論您面臨什么條件。

安全

Istio 的安全功能使開(kāi)發(fā)人員可以專注于應(yīng)用程序級(jí)別的安全性。Istio 提供底層安全通信信道,并大規(guī)模管理服務(wù)通信的認(rèn)證、授權(quán)和加密。使用Istio,服務(wù)通信在默認(rèn)情況下是安全的,它允許您跨多種協(xié)議和運(yùn)行時(shí)一致地實(shí)施策略——所有這些都很少或根本不需要應(yīng)用程序更改。

雖然 Istio 與平臺(tái)無(wú)關(guān),但將其與 Kubernetes(或基礎(chǔ)架構(gòu))網(wǎng)絡(luò)策略結(jié)合使用,其優(yōu)勢(shì)會(huì)更大,包括在網(wǎng)絡(luò)和應(yīng)用層保護(hù) pod 間或服務(wù)間通信的能力。

可觀察性

Istio 強(qiáng)大的跟蹤、監(jiān)控和日志記錄可讓您深入了解服務(wù)網(wǎng)格部署。通過(guò) Istio 的監(jiān)控功能,可以真正了解服務(wù)性能如何影響上游和下游的功能,而其自定義儀表板可以提供對(duì)所有服務(wù)性能的可視性,并讓您了解該性能如何影響您的其他進(jìn)程。

Istio 的 Mixer 組件負(fù)責(zé)策略控制和遙測(cè)收集。它提供后端抽象和中介,將 Istio 的其余部分與各個(gè)基礎(chǔ)架構(gòu)后端的實(shí)現(xiàn)細(xì)節(jié)隔離開(kāi)來(lái),并為運(yùn)維提供對(duì)網(wǎng)格和基礎(chǔ)架構(gòu)后端之間所有交互的細(xì)粒度控制。

所有這些功能可以讓您可以更有效地設(shè)置、監(jiān)控和實(shí)施服務(wù)上的 SLO。當(dāng)然,最重要的是,您可以快速有效地檢測(cè)和修復(fù)問(wèn)題。

平臺(tái)支持

Istio 是獨(dú)立于平臺(tái)的,旨在運(yùn)行在各種環(huán)境中,包括跨云、內(nèi)部部署、Kubernetes、Mesos 等。您可以在 Kubernetes 上部署 Istio 或具有 Consul 的 Nomad 上部署。Istio 目前支持:

1.在 Kubernetes 上部署的服務(wù)

2.使用 Consul 注冊(cè)的服務(wù)

3.在虛擬機(jī)上部署的服務(wù)


Istio架構(gòu)

Istio 服務(wù)網(wǎng)格邏輯上分為數(shù)據(jù)平面控制平面

數(shù)據(jù)平面由一組以 sidecar 方式部署的智能代理(Envoy組成。這些代理可以調(diào)節(jié)和控制微服務(wù)及 Mixer 之間所有的網(wǎng)絡(luò)通信。

控制平面負(fù)責(zé)管理和配置代理來(lái)路由流量。此外控制平面配置 Mixer 以實(shí)施策略和收集遙測(cè)數(shù)據(jù)。

下圖顯示了構(gòu)成每個(gè)面板的不同組件:

Envoy

Istio 使用 Envoy 代理的擴(kuò)展版本,Envoy 是以 C++ 開(kāi)發(fā)的高性能代理,用于調(diào)解服務(wù)網(wǎng)格中所有服務(wù)的所有入站和出站流量。Envoy 的許多內(nèi)置功能被 istio 發(fā)揚(yáng)光大,例如:

動(dòng)態(tài)服務(wù)發(fā)現(xiàn)

負(fù)載均衡

TLS 終止

HTTP/2 & gRPC 代理

熔斷器

健康檢查、基于百分比流量拆分的灰度發(fā)布

故障注入

豐富的度量指標(biāo)

Envoy 被部署為 sidecar,和對(duì)應(yīng)服務(wù)在同一個(gè) Kubernetes pod 中。這允許 Istio 將大量關(guān)于流量行為的信號(hào)作為屬性提取出來(lái),而這些屬性又可以在 Mixer 中用于執(zhí)行策略決策,并發(fā)送給監(jiān)控系統(tǒng),以提供整個(gè)網(wǎng)格行為的信息。

Sidecar 代理模型還可以將 Istio 的功能添加到現(xiàn)有部署中,而無(wú)需重新構(gòu)建或重寫(xiě)代碼。可以來(lái)了解為什么我們?cè)谠O(shè)計(jì)目標(biāo)中選擇這種方式。

Mixer

Mixer 是一個(gè)獨(dú)立于平臺(tái)的組件,負(fù)責(zé)在服務(wù)網(wǎng)格上執(zhí)行訪問(wèn)控制和使用策略,并從 Envoy 代理和其他服務(wù)收集遙測(cè)數(shù)據(jù)。代理提取請(qǐng)求級(jí)屬性,發(fā)送到 Mixer 進(jìn)行評(píng)估。有關(guān)屬性提取和策略評(píng)估的更多信息,請(qǐng)參見(jiàn) Mixer 配置。

Mixer 中包括一個(gè)靈活的插件模型,使其能夠接入到各種主機(jī)環(huán)境和基礎(chǔ)設(shè)施后端,從這些細(xì)節(jié)中抽象出 Envoy 代理和 Istio 管理的服務(wù)。

Pilot

Pilot 為 Envoy sidecar 提供服務(wù)發(fā)現(xiàn)功能,為智能路由(例如 A/B 測(cè)試、金絲雀部署等)和彈性(超時(shí)、重試、熔斷器等)提供流量管理功能。它將控制流量行為的高級(jí)路由規(guī)則轉(zhuǎn)換為特定于 Envoy 的配置,并在運(yùn)行時(shí)將它們傳播到 sidecar。

Pilot 將平臺(tái)特定的服務(wù)發(fā)現(xiàn)機(jī)制抽象化并將其合成為符合 Envoy 數(shù)據(jù)平面 API 的任何 sidecar 都可以使用的標(biāo)準(zhǔn)格式。這種松散耦合使得 Istio 能夠在多種環(huán)境下運(yùn)行(例如,Kubernetes、Consul、Nomad),同時(shí)保持用于流量管理的相同操作界面。

Citadel

Citadel 通過(guò)內(nèi)置身份和憑證管理可以提供強(qiáng)大的服務(wù)間和最終用戶身份驗(yàn)證。可用于升級(jí)服務(wù)網(wǎng)格中未加密的流量,并為運(yùn)維人員提供基于服務(wù)標(biāo)識(shí)而不是網(wǎng)絡(luò)控制的強(qiáng)制執(zhí)行策略的能力。從 0.5 版本開(kāi)始,Istio 支持基于角色的訪問(wèn)控制,以控制誰(shuí)可以訪問(wèn)您的服務(wù)。

?

Istio設(shè)計(jì)目標(biāo)

Istio 的架構(gòu)設(shè)計(jì)中有幾個(gè)關(guān)鍵目標(biāo),這些目標(biāo)對(duì)于使系統(tǒng)能夠應(yīng)對(duì)大規(guī)模流量和高性能地服務(wù)處理至關(guān)重要。

  • 最大化透明度:若想 Istio 被采納,應(yīng)該讓運(yùn)維和開(kāi)發(fā)人員只需付出很少的代價(jià)就可以從中受益。為此,Istio 將自身自動(dòng)注入到服務(wù)間所有的網(wǎng)絡(luò)路徑中。Istio 使用 sidecar 代理來(lái)捕獲流量,并且在盡可能的地方自動(dòng)編程網(wǎng)絡(luò)層,以路由流量通過(guò)這些代理,而無(wú)需對(duì)已部署的應(yīng)用程序代碼進(jìn)行任何改動(dòng)。在 Kubernetes中,代理被注入到 pod 中,通過(guò)編寫(xiě) iptables 規(guī)則來(lái)捕獲流量。注入 sidecar 代理到 pod 中并且修改路由規(guī)則后,Istio 就能夠調(diào)解所有流量。這個(gè)原則也適用于性能。當(dāng)將 Istio 應(yīng)用于部署時(shí),運(yùn)維人員可以發(fā)現(xiàn),為提供這些功能而增加的資源開(kāi)銷是很小的。所有組件和 API 在設(shè)計(jì)時(shí)都必須考慮性能和規(guī)模。

  • 增量:隨著運(yùn)維人員和開(kāi)發(fā)人員越來(lái)越依賴 Istio 提供的功能,系統(tǒng)必然和他們的需求一起成長(zhǎng)。雖然我們期望繼續(xù)自己添加新功能,但是我們預(yù)計(jì)最大的需求是擴(kuò)展策略系統(tǒng),集成其他策略和控制來(lái)源,并將網(wǎng)格行為信號(hào)傳播到其他系統(tǒng)進(jìn)行分析。策略運(yùn)行時(shí)支持標(biāo)準(zhǔn)擴(kuò)展機(jī)制以便插入到其他服務(wù)中。此外,它允許擴(kuò)展詞匯表,以允許基于網(wǎng)格生成的新信號(hào)來(lái)執(zhí)行策略。

  • 可移植性:使用 Istio 的生態(tài)系統(tǒng)將在很多維度上有差異。Istio 必須能夠以最少的代價(jià)運(yùn)行在任何云或預(yù)置環(huán)境中。將基于 Istio 的服務(wù)移植到新環(huán)境應(yīng)該是輕而易舉的,而使用 Istio 將一個(gè)服務(wù)同時(shí)部署到多個(gè)環(huán)境中也是可行的(例如,在多個(gè)云上進(jìn)行冗余部署)。

  • 策略一致性:在服務(wù)間的 API 調(diào)用中,策略的應(yīng)用使得可以對(duì)網(wǎng)格間行為進(jìn)行全面的控制,但對(duì)于無(wú)需在 API 級(jí)別表達(dá)的資源來(lái)說(shuō),對(duì)資源應(yīng)用策略也同樣重要。例如,將配額應(yīng)用到 ML 訓(xùn)練任務(wù)消耗的 CPU 數(shù)量上,比將配額應(yīng)用到啟動(dòng)這個(gè)工作的調(diào)用上更為有用。因此,策略系統(tǒng)作為獨(dú)特的服務(wù)來(lái)維護(hù),具有自己的 API,而不是將其放到代理/sidecar 中,這容許服務(wù)根據(jù)需要直接與其集成。


Sidecar 模式

Sidecar 模式是 Istio 服務(wù)網(wǎng)格采用的模式,在服務(wù)網(wǎng)格出現(xiàn)之前該模式就一直存在,尤其是當(dāng)微服務(wù)出現(xiàn)后開(kāi)始盛行

?

什么是 Sidecar 模式

將應(yīng)用程序的功能劃分為單獨(dú)的進(jìn)程可以被視為 Sidecar 模式。Sidecar 設(shè)計(jì)模式允許你為應(yīng)用程序添加許多功能,而無(wú)需額外第三方組件的配置和代碼。

就如 Sidecar 連接著摩托車一樣,類似地在軟件架構(gòu)中, Sidecar 應(yīng)用是連接到父應(yīng)用并且為其擴(kuò)展或者增強(qiáng)功能。Sidecar 應(yīng)用與主應(yīng)用程序松散耦合。

讓我用一個(gè)例子解釋一下。想象一下假如你有6個(gè)微服務(wù)相互通信以確定一個(gè)包裹的成本。

每個(gè)微服務(wù)都需要具有可觀察性、監(jiān)控、日志記錄、配置、斷路器等功能。所有這些功能都是根據(jù)一些行業(yè)標(biāo)準(zhǔn)的第三方庫(kù)在每個(gè)微服務(wù)中實(shí)現(xiàn)的。

但再想一想,這不是多余嗎?它不會(huì)增加應(yīng)用程序的整體復(fù)雜性嗎?如果你的應(yīng)用程序是用不同的語(yǔ)言編寫(xiě)時(shí)會(huì)發(fā)生什么——如何合并那些特定用于 .Net、Java、Python 等語(yǔ)言的第三方庫(kù)。

?

使用 Sidecar 模式的優(yōu)勢(shì)

1.通過(guò)抽象出與功能相關(guān)的共同基礎(chǔ)設(shè)施到一個(gè)不同層降低了微服務(wù)代碼的復(fù)雜度

3.因?yàn)槟悴辉傩枰帉?xiě)相同的第三方組件配置文件和代碼,所以能夠降低微服務(wù)架構(gòu)中的代碼重復(fù)度

3.降低應(yīng)用程序代碼和底層平臺(tái)的耦合度

?

Sidecar 模式如何工作

Sidecar 是容器應(yīng)用模式的一種,也是在 Service Mesh 中發(fā)揚(yáng)光大的一種模式,詳見(jiàn) Service Mesh 架構(gòu)解析,其中詳細(xì)描述了節(jié)點(diǎn)代理Sidecar 模式的 Service Mesh 架構(gòu)。

使用 Sidecar 模式部署服務(wù)網(wǎng)格時(shí),無(wú)需在節(jié)點(diǎn)上運(yùn)行代理(因此您不需要基礎(chǔ)結(jié)構(gòu)的協(xié)作),但是集群中將運(yùn)行多個(gè)相同的 Sidecar 副本。從另一個(gè)角度看:我可以為一組微服務(wù)部署到一個(gè)服務(wù)網(wǎng)格中,你也可以部署一個(gè)有特定實(shí)現(xiàn)的服務(wù)網(wǎng)格。在 Sidecar 部署方式中,你會(huì)為每個(gè)應(yīng)用的容器部署一個(gè)伴生容器。Sidecar 接管進(jìn)出應(yīng)用容器的所有流量。在 Kubernetes 的 Pod 中,在原有的應(yīng)用容器旁邊運(yùn)行一個(gè) Sidecar 容器,可以理解為兩個(gè)容器共享存儲(chǔ)、網(wǎng)絡(luò)等資源,可以廣義的將這個(gè)注入了 Sidecar 容器的 Pod 理解為一臺(tái)主機(jī),兩個(gè)容器共享主機(jī)資源。

例如下圖 SOFAMesh & SOFA MOSN—基于Istio構(gòu)建的用于應(yīng)對(duì)大規(guī)模流量的Service Mesh解決方案的架構(gòu)圖中描述的,MOSN 作為 Sidecar 的方式和應(yīng)用運(yùn)行在同一個(gè) Pod 中,攔截所有進(jìn)出應(yīng)用容器的流量,SOFAMesh 兼容 Istio,其中使用 Go 語(yǔ)言開(kāi)發(fā)的 SOFAMosn 替換了 Envoy。

總結(jié)

以上是生活随笔為你收集整理的Istio服务网格实践指南 学习笔记(二) Istio架构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。