Service Mesh - Istio 1.5 擁抱單體,簡化架構(gòu)

原文:https://makeoptim.com/service-mesh/istio1-5

上一篇 向大家介紹了 Service Mesh 的代表 Istio使鹅。并且介紹了 Istio 的架構(gòu),在文中我注解了1.5 版本去掉了 Mixer 組件盐捷。 Istio 1.5 是一個(gè)具有“重建”性的版本。以往门坷,Istio 的性能和易用性一直是被吐槽的。從 Istio 1.5 可以看出袍镀,Istio 團(tuán)隊(duì)開始正視這個(gè)問題默蚌,并在此版本中重建了控制平面,擁抱單體苇羡,簡化了 Istio 的體系架構(gòu)绸吸,改善了操作體驗(yàn)。

Istio 1.5 introduces the Istiod binary, which significantly simplifies Istio’s architecture, improving operational experience. – By Steven Dake

架構(gòu)

在架構(gòu)上设江,Istio 1.5 重建了控制平面锦茁,將原有的多個(gè)組件整合為一個(gè)單體結(jié)構(gòu) istiod,并廢棄了 Mixer 組件叉存。

istiod

istiod 是微服務(wù)架構(gòu)模型的逆轉(zhuǎn)码俩。要了解 istiod 如何改善 Istio,讓我們看一下它之前的結(jié)構(gòu)歼捏。

Istio 1.4 控制平面包括五個(gè)服務(wù)和可擴(kuò)展性插件:

  • Sidecar 自動(dòng)注入稿存。由 Sidecar-Injector 提供(未圖示)晃听。
  • 可擴(kuò)展性蜀漆。由 Mixer 提供(組織遙測和組織策略服務(wù))威鹿。
  • 可擴(kuò)展性插件半火。由 Mixer Adapter 插件提供琅攘。
  • Sidecar 代理配置生成和服務(wù)歉摧。由 Pilot 提供厨剪。
  • 安全华糖。由 Citadel 提供痰洒。
  • 驗(yàn)證瓢棒。由 Galley 提供。

Istio 1.5 將控制平面重組為一項(xiàng)服務(wù)丘喻,并重新實(shí)現(xiàn)了可擴(kuò)展性:

  • istiod:提供代理 Sidecar 自動(dòng)注入脯宿,網(wǎng)格計(jì)算,安全性和驗(yàn)證泉粉。
  • 數(shù)據(jù)平面:Mixer Adapater 插件作為 Envoy 插件在網(wǎng)格中重新實(shí)現(xiàn)连霉。

如下圖所示,Istio 1.5 的體系結(jié)構(gòu)得到了簡化:

需要注意的一點(diǎn)是嗡靡,原有的多組件并不是被完全移除跺撼,而是在重構(gòu)后以模塊的形式整合在一起組成了 istiod

為什么選擇 Istiod

  • 控制平面的操作更輕松讨彼。簡化的體系結(jié)構(gòu)使網(wǎng)格管理員和操作員可以更輕松地控制和監(jiān)視 Istio 控制平面歉井。istiod 與 Istio 1.4 中的六到七個(gè)服務(wù)相比,監(jiān)視一項(xiàng)服務(wù)要容易得多哈误。

  • 提高性能哩至。在 Istio 的其他版本中躏嚎,通過網(wǎng)絡(luò)進(jìn)行了大量的控制間組件通信,這導(dǎo)致了性能問題菩貌。istiod 減少了組件數(shù)量卢佣,因此對(duì)性能產(chǎn)生積極影響。

  • 減少內(nèi)部 API 占用空間箭阶。以前的微服務(wù)實(shí)現(xiàn)中很多都包含冗余代碼珠漂。通過刪除此冗余代碼(每個(gè)微服務(wù)通常用于配置)來改進(jìn) Istio。

功能更新

Istio 1.5 不僅僅簡化了架構(gòu)尾膊,同時(shí)也添加了新功能、優(yōu)化性能荞彼、修復(fù)了一些 Bug冈敛。

流量管理

  • ServiceEntry 通過避免不必要的完全推送提升了性能#19305
  • 修復(fù)了 Envoy sidecar readiness 探針不一致問題鸣皂。#18164
  • 通過局部更新的方式改善了通過 xDS 進(jìn)行的 Envoy 代理配置更新的性能抓谴。#18354
  • 添加了通過 DestinationRule 為每個(gè)目標(biāo)服務(wù)配置本地負(fù)載均衡設(shè)置的選項(xiàng)。#18406
  • 修復(fù)了Pod崩潰會(huì)觸發(fā)過多的Envoy代理配置推送的問題寞缝。#18574
  • 修復(fù)了應(yīng)用調(diào)用自己的問題癌压。#19308
  • 添加了 Istio CNI 時(shí)對(duì) iptables 增加了故障檢測。#19354
  • DestinationRule 添加了 consecutiveGatewayErrors 和 consecutive5xxErrors 作為異常檢測選項(xiàng)荆陆。#19771
  • 提升了 EnvoyFilter 匹配性能滩届。#19786
  • 添加了對(duì) HTTP_PROXY 協(xié)議的支持。#19919
  • 改進(jìn)了 iptables 設(shè)置被啼,默認(rèn)使用 iptables-restore帜消。#18847
  • 通過過濾無用集群,提升了 Gateway 的性能浓体。#20124

安全

  • 穩(wěn)定版添加 SDS泡挺,并默認(rèn)開啟。它為 Istio Envoy 代理提供身份配置命浴。
  • 添加 Beta 認(rèn)證 API娄猫。新 API 分為 PeerAuthentication 和 RequestAuthenticaiton,面向工作負(fù)載生闲。
  • 在授權(quán)策略中添加了拒絕語義排除匹配媳溺。
  • Beta 版本默認(rèn)開啟自動(dòng) mTLS。
  • Node agent 和 Pilot agent 合并跪腹,移除了 Pod 安全策略的需要褂删,提升了安全性。
  • 合并 Citadel 證書發(fā)放功能到 Istiod冲茸。
  • 支持 Kubernetes first-party-jwt 作為集群中 CSR 認(rèn)證的備用 token屯阀。
  • 通過 Istio Agent 向 Prometheus 提供密鑰和證書缅帘。
  • 添加了支持 Istio CA 和 Kubernetes CA 來為控制平面提供證書,通過配置 values.global.pilotCertProvider难衰。

遙測

  • 對(duì) v2 版本添加了 TCP 協(xié)議支持钦无。
  • 在指標(biāo)和日志中支持添加 gRPC 響應(yīng)狀態(tài)碼。
  • 支持 Istio Canonical Service
  • 改進(jìn) v2 遙測流程的穩(wěn)定性盖袭。
  • 為 v2 遙測的可配置性提供 alpha 級(jí)別的支持失暂。
  • 支持在 Envoy 節(jié)點(diǎn)的元數(shù)據(jù)中添加 AWS 平臺(tái)的元數(shù)據(jù)。
  • 更新了 Mixer 的 Stackdriver 適配器鳄虱,以支持可配置的刷新間隔來跟蹤數(shù)據(jù)弟塞。
  • 支持對(duì) Jaeger 插件的 headless 收集服務(wù)。
  • 修復(fù)了 kubernetesenv 適配器以提供對(duì)名字中有.的 Pod 的支持拙已。
  • 改進(jìn)了 Fluentd 適配器决记,在導(dǎo)出的時(shí)間戳中提供毫秒級(jí)輸出。

配置管理

  • 用 IstioOperator API 替代了 IstioControlPlane API倍踪。
  • 添加了 istioctl operator init 和 istioctl operator remove 命令系宫。
  • 添加緩存改善了調(diào)和速度。

istioctl

  • istioctl analyze 轉(zhuǎn)為穩(wěn)定特性建车。

  • 添加了各種分析器: mTLS扩借、JWT, ServiceAssociation, Secret, sidecar image, port name and policy deprecated 等分析器。

  • 為 RequestAuthentication 添加了更多的驗(yàn)證規(guī)則缤至。

  • | 添加新標(biāo)記 -A | –all-namespaces 給 istioctl analyze潮罪,來分析整個(gè)集群。 |

  • 添加通過 stdin 到 istioctl analyze 的內(nèi)容分析凄杯。

  • 添加 istioctl analyze -L 顯示所有可用分析列表错洁。

  • 添加從 istioctl analyze 抑制信息的能力。

  • 為 istioctl analyze 添加結(jié)構(gòu)化格式選項(xiàng)戒突。

  • 為 istioctl analyze 的輸出添加對(duì)應(yīng)的文檔鏈接屯碴。

  • 通過 Istio API 在分析器中提供標(biāo)注方法。

  • istioctl analyze 可以基于目錄加載文件膊存。

  • istioctl analyze 嘗試將消息與它們的源文件名關(guān)聯(lián)导而。

  • istioctl analyze 可打印命名空間。

  • istioctl analyze 默認(rèn)分析集群內(nèi)資源隔崎。

  • 修復(fù)分析器抑制集群級(jí)別資源消息的 bug今艺。

  • 為 istioctl manifest 添加多文件支持。

  • 替換 IstioControlPlane API 為 IstioOperator API爵卒。

  • 為 istioctl dashboard 添加選擇器.

  • 為 istioctl manifest –set 標(biāo)記添加切片和列表支持虚缎。

  • 添加了 docker/istioctl 鏡像

小結(jié)

Istio 1.5 是一個(gè)“重建”性的版本。擁抱單體钓株,簡化架構(gòu)实牡,重建了整個(gè)控制平面陌僵,迎來了全新的 istiod;廢棄了 Mixer创坞,提高了性能碗短。 Istio 1.5 的重建,不禁讓我想起過早的優(yōu)化是萬惡之源题涨。

Donald Knuth 1974 年在 ACM Journal 上發(fā)表的文章 “Structured Programming with go to Statements” 中寫道:

We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil.

Istio

簡言之偎谁,沒有量化的性能測試檢測到真正的性能問題之前,在代碼層面各種炫技式優(yōu)化纲堵,不僅可能提升不了性能巡雨,反而更會(huì)導(dǎo)致更多 bugs。而這些 bugs席函,在我看來不僅僅是代碼上的問題鸯隅,還包括可維護(hù)性、復(fù)雜性向挖、問題診斷能力等。這順應(yīng)了一句老話炕舵,“永遠(yuǎn)沒有完美的架構(gòu)何之,只有最合適的架構(gòu)”不單單產(chǎn)品設(shè)計(jì)的時(shí)候咽筋,需要考慮用戶溶推。軟件設(shè)計(jì)也需要考慮用戶(可能是運(yùn)維、團(tuán)隊(duì)新人等)奸攻,更何況蒜危,軟件本身就是一種產(chǎn)品。產(chǎn)品需要有用戶使用才能產(chǎn)生價(jià)值睹耐,軟件設(shè)計(jì)亦然辐赞。

在重建的同時(shí),Istio 團(tuán)隊(duì)不忘持續(xù)優(yōu)化和引入新的功能硝训。我相信响委,Istio 一定會(huì)越來越成熟,社區(qū)一定會(huì)越來越火窖梁。讓我們一起期待赘风,Istio 的下一次更新。

參考

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末纵刘,一起剝皮案震驚了整個(gè)濱河市邀窃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌假哎,老刑警劉巖瞬捕,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鞍历,死亡現(xiàn)場離奇詭異,居然都是意外死亡山析,警方通過查閱死者的電腦和手機(jī)堰燎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來笋轨,“玉大人秆剪,你說我怎么就攤上這事【粽” “怎么了仅讽?”我有些...
    開封第一講書人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長钾挟。 經(jīng)常有香客問我洁灵,道長,這世上最難降的妖魔是什么掺出? 我笑而不...
    開封第一講書人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任徽千,我火速辦了婚禮,結(jié)果婚禮上汤锨,老公的妹妹穿的比我還像新娘双抽。我一直安慰自己,他們只是感情好闲礼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開白布牍汹。 她就那樣靜靜地躺著,像睡著了一般柬泽。 火紅的嫁衣襯著肌膚如雪慎菲。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,727評(píng)論 1 305
  • 那天锨并,我揣著相機(jī)與錄音露该,去河邊找鬼。 笑死第煮,一個(gè)胖子當(dāng)著我的面吹牛有决,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播空盼,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼书幕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了揽趾?” 一聲冷哼從身側(cè)響起台汇,我...
    開封第一講書人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后苟呐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體痒芝,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年牵素,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了严衬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡笆呆,死狀恐怖请琳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情赠幕,我是刑警寧澤俄精,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站榕堰,受9級(jí)特大地震影響竖慧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜逆屡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一圾旨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧魏蔗,春花似錦碳胳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽味混。三九已至产雹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間翁锡,已是汗流浹背蔓挖。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留馆衔,地道東北人瘟判。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像角溃,于是被迫代替她去往敵國和親拷获。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容