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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

阿里高专王夕宁:Istio网关之南北向流量管理

發(fā)布時(shí)間:2025/3/16 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 阿里高专王夕宁:Istio网关之南北向流量管理 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

王夕寧

讀完需要

8

分鐘

速讀僅需 3 分鐘

作者簡介:王夕寧 阿里云高級技術(shù)專家,阿里云服務(wù)網(wǎng)格產(chǎn)品ASM及Istio on Kubernetes技術(shù)負(fù)責(zé)人,專注于Kubernetes、云原生、服務(wù)網(wǎng)格等領(lǐng)域。曾在IBM中國開發(fā)中心工作,擔(dān)任過專利技術(shù)評審委員會(huì)主席,作為架構(gòu)師和主要開發(fā)人員負(fù)責(zé)或參與了一系列在SOA中間件、云計(jì)算、IoT等領(lǐng)域的開發(fā)工作,擁有40多項(xiàng)相關(guān)領(lǐng)域的國際技術(shù)專利。著有《Istio服務(wù)網(wǎng)格技術(shù)解析與實(shí)踐》一書;

我們將介紹將集群外部的客戶端連接到集群內(nèi)運(yùn)行的服務(wù),以及如何從集群內(nèi)的服務(wù)訪問集群外部的任何服務(wù),即通常所說的南北向流量管理。其中介紹了 Istio 在南北向流量方面的路由控制能力,引出 Istio 網(wǎng)關(guān)的概念及其工作原理:

  • Istio 網(wǎng)關(guān)的工作機(jī)制

  • Istio 網(wǎng)關(guān)的負(fù)載均衡器原理

  • 入口網(wǎng)關(guān)(Ingress Gateway)的服務(wù)與部署的定義

  • 網(wǎng)關(guān)資源、網(wǎng)關(guān)虛擬服務(wù)的定義

  • 通過一個(gè)示例介紹如何調(diào)試入口網(wǎng)關(guān)可能遇到的問題

1

? ?

Istio 網(wǎng)關(guān)

網(wǎng)絡(luò)社區(qū)中有一個(gè)術(shù)語 Ingress,是指入口請求到集群內(nèi)服務(wù)的流量管理。Ingress 指的是源自本地網(wǎng)絡(luò)之外的流量,指向本地集群網(wǎng)絡(luò)中的端點(diǎn)。此流量首先路由到公開的入口點(diǎn),以便通過執(zhí)行一些本地網(wǎng)絡(luò)的規(guī)則和策略來確認(rèn)哪些流量被允許進(jìn)入。如果流量未通過這些入口點(diǎn),則無法與集群內(nèi)的任何服務(wù)連接。如果入口點(diǎn)允許流量進(jìn)入,則將其代理到本地網(wǎng)絡(luò)中的合適節(jié)點(diǎn)。Istio 對入口流量的管理是由 Istio 網(wǎng)關(guān)進(jìn)行的。

2

? ?

Istio 網(wǎng)關(guān)的工作原理

傳統(tǒng)上,Kubernetes 使用 Ingress 控制器來處理從外部進(jìn)入集群的流量。使用 Istio 時(shí),情況不再如此。Istio 網(wǎng)關(guān)用新的 Gateway 資源和 VirtualServices 資源來控制入口流量,它們協(xié)同工作以將流量路由到網(wǎng)格中。在網(wǎng)格內(nèi)部不需要 Gateways,因?yàn)榉?wù)可以通過集群本地服務(wù)名稱相互訪問。

那么 Istio 網(wǎng)關(guān)是怎樣工作的?請求如何到達(dá)它想要的應(yīng)用程序?基本步驟如下:

  • 客戶端在特定端口上發(fā)出請求。

  • 負(fù)載均衡器在這個(gè)端口上進(jìn)行偵聽,并將請求轉(zhuǎn)發(fā)到集群中(在相同或新的端口)。

  • 在集群內(nèi)部,請求被路由到 Istio IngressGateway 服務(wù)所偵聽的負(fù)載均衡器轉(zhuǎn)發(fā)過來的端口上。

  • Istio IngressGateway 服務(wù)將請求(在相同或新的端口)轉(zhuǎn)發(fā)到對應(yīng)的 pod 上。

  • 在 IngressGateway pod 上會(huì)配置 Gateway 資源和 VirtualService 資源定義。Gateway 會(huì)配置端口、協(xié)議以及相關(guān)安全證書。VirtualService 的路由配置信息用于找到正確的服務(wù)。

  • Istio IngressGateway pod 會(huì)根據(jù)路由配置信息將請求路由到對應(yīng)的應(yīng)用服務(wù)上。

  • 應(yīng)用服務(wù)將請求路由到對應(yīng)的應(yīng)用 pod 上。

  • Istio網(wǎng)關(guān)的工作原理

    3

    ? ?

    Istio 網(wǎng)關(guān)的負(fù)載均衡作用

    典型的服務(wù)網(wǎng)格具有一個(gè)或多個(gè)負(fù)載均衡器,也稱為網(wǎng)關(guān)(Gateway),它們從外部網(wǎng)絡(luò)終止 TLS 并允許流量進(jìn)入網(wǎng)格。然后,流量通過邊車網(wǎng)關(guān)(Sidecar gateway)流經(jīng)內(nèi)部服務(wù)。應(yīng)用程序使用外部服務(wù)的場景也很常見,可以直接調(diào)用外部服務(wù),或者在某些部署中強(qiáng)制通過專用出口網(wǎng)關(guān)(Egress Gateway)離開網(wǎng)格的所有流量。

    Istio 具有入口網(wǎng)關(guān)的概念,它扮演網(wǎng)絡(luò)入口點(diǎn)的角色,負(fù)責(zé)保護(hù)和控制來自集群外部的流量對集群的訪問。

    網(wǎng)關(guān)在網(wǎng)格中的使用情況

    此外,Istio 的網(wǎng)關(guān)還扮演負(fù)載均衡和虛擬主機(jī)路由的角色。如圖所示,可以看到默認(rèn)情況下 Istio 使用 Envoy 代理作為入口代理。Envoy 是一個(gè)功能強(qiáng)大的服務(wù)到服務(wù)代理,但它也有負(fù)載均衡和路由的功能,可代理的流量包括從服務(wù)網(wǎng)格外部到其內(nèi)部運(yùn)行的服務(wù),或者從集群內(nèi)部服務(wù)到外部服務(wù)。在前面章節(jié)中介紹的 Envoy 的所有功能也可以在入口網(wǎng)關(guān)中使用。

    Istio 的入口網(wǎng)關(guān)服務(wù)

    對于入口流量管理,你可能會(huì)問:為什么不直接使用 Kubernetes Ingress API?

    • 第一個(gè)原因,Kubernetes Ingress 是一個(gè)面向 HTTP 工作負(fù)載的非常簡單的規(guī)范。有 Kubernetes Ingress 的實(shí)現(xiàn)(如 Nginx、Heptio Contour 等),但每個(gè)都適用于 HTTP 流量。實(shí)際上,Ingress 規(guī)范只將端口 80 和端口 443 視為入口點(diǎn)。這嚴(yán)重限制了集群運(yùn)維人員可以允許進(jìn)入服務(wù)網(wǎng)格的流量類型。例如,如果你有 Kafka 工作負(fù)載,則可能希望向這些消息代理公開直接 TCP 連接。

    • 第二個(gè)原因,Kubernetes Ingress API 無法表達(dá) Istio 的路由需求。Ingress 沒有通用的方法來指定復(fù)雜的流量路由規(guī)則,如流量拆分或流量鏡像等。這個(gè)領(lǐng)域缺乏規(guī)范會(huì)導(dǎo)致每個(gè)供應(yīng)商重新設(shè)想如何更好地為每種類型的 Ingress 實(shí)現(xiàn)(如 HAProxy、Nginx 等)做好配置管理。Ingress 試圖在不同的 HTTP 代理之間取一個(gè)公共的交集,因此只能支持最基本的 HTTP 路由。

    • 最后一個(gè)原因,由于事前沒有明確規(guī)定,大多數(shù)供應(yīng)商的選擇是通過部署上的定制注釋來做配置。供應(yīng)商之間的注釋各不相同,并且不可移植,如果 Istio 繼續(xù)延續(xù)這種趨勢,那么就會(huì)有更多的注釋來解釋 Envoy 作為邊緣網(wǎng)關(guān)的所有功能。

    Istio 網(wǎng)關(guān)通過將 L4-L6 配置與 L7 配置分離克服了 Ingress 的這些缺點(diǎn)。Istio 網(wǎng)關(guān)只用于配置 L4-L6 功能(例如,對外公開的端口、TLS 配置),所有主流的 L7 代理均以統(tǒng)一的方式實(shí)現(xiàn)了這些功能。然后,通過在 Gateway 上綁定 VirtualService 的方式,可以使用標(biāo)準(zhǔn)的 Istio 規(guī)則來控制進(jìn)入 Gateway 的 HTTP 和 TCP 流量。負(fù)載均衡器可以手動(dòng)配置或通過服務(wù)自動(dòng)配置其類型,例如 type: LoadBalancer。在這種情況下,由于并非所有云都支持自動(dòng)配置,假設(shè)手動(dòng)配置負(fù)載均衡器以將流量轉(zhuǎn)發(fā)到 IngressGateway Service 正在偵聽的端口。例如如下的負(fù)載均衡器正在監(jiān)聽以下端口:

    • HTTP:端口 80,將流量轉(zhuǎn)發(fā)到端口 30080

    • HTTPS:端口 443,將流量轉(zhuǎn)發(fā)到端口 30443

    • MySQL:端口 3306,將流量轉(zhuǎn)發(fā)到端口 30306 確保負(fù)載均衡器配置轉(zhuǎn)發(fā)到所有工作節(jié)點(diǎn)。這將確保即使某些節(jié)點(diǎn)關(guān)閉也會(huì)轉(zhuǎn)發(fā)流量。

    4

    ? ?

    入口網(wǎng)關(guān)服務(wù)

    IngressGateway 服務(wù)(入口網(wǎng)關(guān)服務(wù))必須監(jiān)聽上節(jié)介紹的所有端口,以便能夠?qū)⒘髁哭D(zhuǎn)發(fā)到 IngressGateway pod 上。Kubernetes 服務(wù)不是“真正的”服務(wù),該請求將由 Kubernetes 提供的 kube-proxy 轉(zhuǎn)發(fā)到具有運(yùn)行對應(yīng) pod 的節(jié)點(diǎn)上。在節(jié)點(diǎn)上,IP table 配置將請求轉(zhuǎn)發(fā)到適當(dāng)?shù)?pod:

    ports:-?name:?http2nodePort:?30000port:?80protocol:?TCP-?name:?httpsnodePort:?30443port:?443protocol:?TCP-?name:?mysqlnodePort:?30306port:?3306protocol:?TCP

    5

    ? ?

    入口網(wǎng)關(guān)部署

    IngressGateway 部署是一個(gè)基于 Envoy 代理的封裝,它的配置方式與服務(wù)網(wǎng)格中使用的 Sidecar 配置相同(實(shí)際上是同樣的容器鏡像)。當(dāng)我們創(chuàng)建或更改一個(gè) Gateway 或 VirtualService 時(shí),Istio Pilot 控制器會(huì)檢測到這些變更,并將這些變更信息轉(zhuǎn)換為 Envoy 配置,然后將 Envoy 配置信息發(fā)送給相關(guān) Envoy 代理,包括內(nèi)部的 Envoy 和 IngressGateway 中的 Envoy。

    注意:這里不要混淆 IngressGateway 與 Gateway,Gateway 資源是用于配置 IngressGateway 的一種 Kubernetes 的自定義資源。

    由于不必在 Kubernetes pod 或部署中聲明容器端口,因此我們不必在 IngressGateway Deployment 中聲明端口。但是,如果查看部署內(nèi)部,可以看到聲明的許多端口。另外,在 IngressGateway 部署中需要關(guān)注 SSL 證書,為了能夠訪問 Gateway 資源內(nèi)的證書,請確保已正確加載這些證書。

    6

    ? ?

    網(wǎng)關(guān)資源

    網(wǎng)關(guān)資源用來配置 Envoy 的端口,前面的示例中已經(jīng)使用該服務(wù)公開了三個(gè)端口,因此需要在 Envoy 中處理這些端口。此外,可以通過聲明一個(gè)或多個(gè) Gateways 來支持多端口能力。下面的示例中使用單個(gè) Gateway,但可以分為兩個(gè)或三個(gè)分別定義:

    apiVersion:?networking.istio.io/v1alpha3 kind:?Gateway metadata:name:?default-gatewaynamespace:?istio-system spec:selector:istio:?ingressgatewayservers:-?hosts:-?'*'port:name:?httpnumber:?80protocol:?HTTP-?hosts:-?'*'port:name:?httpsnumber:?443protocol:?HTTPStls:mode:?SIMPLEprivateKey:?/etc/istio/ingressgateway-certs/tls.keyserverCertificate:?/etc/istio/ingressgateway-certs/tls.crt-?hosts:?#?For?TCP?routing?this?fields?seems?to?be?ignored,?but?it?is?matched-?'*'??#?with?the?VirtualService,?I?use?*?since?it?will?match?anything.port:name:?mysqlnumber:?3306protocol:?TCP

    7

    ? ?

    網(wǎng)關(guān)虛擬服務(wù)

    VirtualService 資源與 Gateway 資源相互配合支持 Envoy 的配置。下面是一個(gè)支持 HTTP 服務(wù)的網(wǎng)關(guān)虛擬服務(wù)的基本配置:

    apiVersion:?networking.istio.io/v1alpha3 kind:?VirtualService metadata:name:?counter spec:gateways:-?default-gateway.istio-system.svc.cluster.localhosts:-?counter.lab.example.comhttp:-?match:-?uri:prefix:?/route:-?destination:host:?counterport:number:?80

    現(xiàn)在,當(dāng)我們添加一個(gè) Gateway 和一個(gè) VirtualService 時(shí),路由已在 Envoy 配置中創(chuàng)建。要查看此內(nèi)容,你可以使用如下命令:

    kubectl?port-forward?istio-ingressgateway-xxxx-yyyy-n?istio-system?15000通過訪問地址 http://localhost:15000/config_dump來查看配置。

    8

    ? ?

    調(diào)試入口網(wǎng)關(guān)

    調(diào)試網(wǎng)絡(luò)問題有時(shí)很困難,所以這里總結(jié)一些有用的命令用于調(diào)試。端口轉(zhuǎn)發(fā)到第一個(gè) istio-ingressgateway pod:

    kubectl?-n?istio-system?port-forward?$(kubectl?-n?istio-system?get?pods?-listio=ingressgateway?-o=jsonpath="{.items[0].metadata.name}")?15000

    然后,可以從端口轉(zhuǎn)發(fā)的入口網(wǎng)關(guān) pod 中獲得 http 路由:

    Curl?--silent?http://localhost:15000/config_dump?|jq?.configs[3].dynamic_route_configs[].route_config.virtual_hosts[]

    端口轉(zhuǎn)發(fā)的入口網(wǎng)關(guān)pod

    查看上述端口轉(zhuǎn)發(fā)的入口網(wǎng)關(guān) pod 的日志信息:

    kubectl?-n?istio-system?logs?$(kubectl?-n?istio-system?get?pods?-listio=ingressgateway?-o=jsonpath="{.items[0].metadata.name}")?--tail=300

    查看 Pilot pod 的日志信息:

    kubectl?-n?istio-system?logs?$(kubectl?-n?istio-system?get?pods?-listio=pilot?-o=jsonpath="{.items[0].metadata.name}")?discovery?--tail=300

    當(dāng)啟動(dòng)端口轉(zhuǎn)發(fā)到入口網(wǎng)關(guān) istio-ingressgateway 之后,可以執(zhí)行更多操作以獲取更多信息,例如:

    • 要查看 Envoy 偵聽器,請到如下網(wǎng)址瀏覽:http://localhost:15000/listeners ( http://localhost:15000/listeners )。

    • 要打開更詳細(xì)的日志記錄,請到如下網(wǎng)址:http://localhost:15000/logging ( http://localhost:15000/logging )。

    • 可以在根目錄 http://localhost:15000/中找到更多信息。

    9

    ? ?

    福利時(shí)間

    看過了Istio的原理與功能的介紹,想必大家也有了一定的了解,為了幫助大家更好的學(xué)習(xí)與理解Istio的技術(shù),中生代技術(shù)聯(lián)合機(jī)械工業(yè)華章圖書給大家?guī)砀@?/p>

    《Istio服務(wù)網(wǎng)格技術(shù)解析與實(shí)踐》

    推薦語:

    Gartner認(rèn)為,2020年服務(wù)網(wǎng)格將成為所有領(lǐng)先的容器管理系統(tǒng)的標(biāo)配技術(shù)。本書適合所有對微服務(wù)和云原生感興趣的讀者,推薦大家對本書進(jìn)行深入的閱讀。

    送書規(guī)則2020年4月30日13:30前在留言區(qū),分享你在學(xué)習(xí)Istion技術(shù)的學(xué)習(xí)與踩坑經(jīng)驗(yàn)、或者對新技術(shù)的更新、迭代有何獨(dú)特的個(gè)人見解,精選留言點(diǎn)贊1-5名各送出此書一本。

    注:獲得贈(zèng)書資格的讀者須于8小時(shí)內(nèi)聯(lián)系小編發(fā)送詳細(xì)收貨信息,逾期則視為主動(dòng)放棄。

    想要加入中生代架構(gòu)群的小伙伴,請?zhí)砑尤汉匣锶?strong>大白的微信

    申請備注(姓名+公司+技術(shù)方向)才能通過哦!

    ? ?END ? ?? #接力技術(shù),鏈接價(jià)值#精彩推薦1.?阿里P9專家右軍:以終為始的架構(gòu)設(shè)計(jì)2.?蘇寧金服技術(shù)大揭秘:支付決策機(jī)器人 3.?手哥架構(gòu)寶典系列:支付系統(tǒng)1.0架構(gòu)演進(jìn) 4.?手哥架構(gòu)寶典系列:支付系統(tǒng)2.0架構(gòu)演進(jìn)漫畫推薦1.?漫畫:程序員和產(chǎn)品經(jīng)理撕得真是太太太太厲害了 2.?漫畫:程序員真的是太太太太太太太太難了!3.?漫畫:普通程序員 vs 優(yōu)秀程序員 4.?漫畫:35歲的IT何去何從? 5.?漫畫:從修燈泡來看各種 IT 崗位,你是哪一種? 6. 漫畫:一批90后已經(jīng)30歲了,更扎心的是…7. 圖解:這才是程序員加班的真正原因!8.?漫畫:中國互聯(lián)網(wǎng)往事(2000-2020)

    總結(jié)

    以上是生活随笔為你收集整理的阿里高专王夕宁:Istio网关之南北向流量管理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 精品动漫一区二区 | 丁香七月激情 | 网站黄在线 | 黄网在线免费 | 爱情岛论坛永久入址测速 | 国产理论在线 | 毛片在线免费视频 | 9色在线视频| 国产一区二区三区亚洲 | 亚洲成人网在线 | 亚洲视频欧美视频 | 日本一区二区三区视频免费看 | 高清国产一区 | 青青草亚洲| 少妇又色又爽又高潮极品 | 91在线精品一区二区三区 | 一区二区三区免费在线 | 香蕉视频日本 | 一区一区三区产品乱码 | 国产精品美女在线 | 久久久久久久久国产精品一区 | 国产精品自拍在线 | 青青在线播放 | 国产videos| 欧美一区二区三区视频在线 | 另类综合在线 | 久久色婷婷| 国产最新视频 | 神马久久精品 | 亚洲午夜无码久久久久 | 极品探花在线播放 | 浓精h攵女乱爱av | 国产av成人一区二区三区高清 | 91日韩精品 | 人妻激情文学 | 日本老太婆做爰视频 | 久久免费看少妇高潮 | 99热精品久久| 日韩免费黄色片 | 欧美一级免费大片 | 色屁屁www| 国内精品一区二区三区 | 日本作爱视频 | 欧美狂猛xxxxx乱大交3 | 日韩v欧美| 黑人番号 | 中文无码av一区二区三区 | 黄色一节片 | 久久久综合精品 | 国产亚洲视频在线观看 | 在线观看免费观看在线 | 欧美性videos高清精品 | 处破女av一区二区 | 国产伦精品一区二区三区四区免费 | www.黄色国产 | 欧美一级激情 | 日日操夜夜操天天操 | 久久免费国产视频 | 国产精品视频无码 | 日韩性xxx | 少妇高潮a一级 | 性欧美最猛 | 黑人操日本女优 | 强制高潮抽搐哭叫求饶h | 性xxxx欧美老肥妇牲乱 | 免费看污视频的网站 | 日韩一级免费观看 | 欧美成人免费观看视频 | 白丝女仆被免费网站 | 国产三级高清 | 精品不卡一区 | 女人的av| av青青草 | 午夜精品久久久久久久久久蜜桃 | 久久丫丫| 色吧婷婷 | 午夜写真片福利电影网 | 亚洲生活片 | www.亚洲黄色| 中国性xxx| 欧洲亚洲精品 | 国产精品黄色片 | 另类小说亚洲色图 | 三及毛片| 91麻豆一区二区三区 | 国产毛片久久久久久 | 永久免费AV无码网站韩国毛片 | 欧美色乱 | 国产91在线视频 | 97久久精品视频 | 久久狠狠干 | 久久久久久天堂 | 亚洲欧美日韩在线一区 | 中文字幕亚洲一区二区三区五十路 | 在线观看中文字幕av | 超碰88| 精品一区二区精品 | 精品人妻一区二区三区久久嗨 | 亚洲一区二区免费视频 |