Service Mesh - 了解Istio

王者的誕生:為什么Istio有如此高的呼聲怨咪?

什么是 Istio?

  • 官方定義:它是一個(gè)完全開(kāi)源的服務(wù)網(wǎng)格润匙,作為透明的一層接入到現(xiàn)有的分布式應(yīng)用中诗眨。它也是一個(gè)平臺(tái),可以與任何日志孕讳、遙測(cè)和策略系統(tǒng)進(jìn)行集成匠楚。Istio 多樣化的特性讓你能夠成功且高效地運(yùn)行微服務(wù)架構(gòu),并提供保護(hù)厂财、連接和監(jiān)控微服務(wù)的統(tǒng)一方法芋簿。
  • Service Mesh 的新形態(tài):增加控制平面

為什么 Istio 能 C 位出鏡?

  • 出擊及時(shí)(2017 年 5 月發(fā)布 0.1版本)
  • 三巨頭光環(huán)加身
  • 第二代 Service Mesh
  • Envoy 的加入讓 Istio 如虎添翼
  • 功能強(qiáng)大
  • 各大平臺(tái)璃饱、廠商的支持

為什么使用 Istio与斤?

  • 優(yōu)勢(shì)
    • 輕松構(gòu)建服務(wù)網(wǎng)格
    • 應(yīng)用代碼無(wú)需更改
  • 功能強(qiáng)大


    image.png

Istio 的核心功能

image.png

Istio 的發(fā)布?xì)v程

image.png

Istio的自我救贖:為什么Istio發(fā)生了兩次重大的架構(gòu)變更?

架構(gòu)變更路線

image.png

架構(gòu) 1.0 版本

image.png
  • 數(shù)據(jù)平面
    • Envoy
  • 控制平面
    • Pilot
    • Citadel
    • Mixer

架構(gòu) 1.1 版本

image.png
  • 1.1 的變化:
    • Adapter
    • Galley

Istio 的架構(gòu)之殤

image.png
  • “完美”架構(gòu)存在的問(wèn)題:
    • 性能
    • 易用性

MVP理論(最小可用產(chǎn)品)告訴我們產(chǎn)品迭代的每個(gè)階段都應(yīng)是能夠讓用戶可用的:


image.png

回歸單體 - Istio 的自我救贖

  • 原有架構(gòu)的復(fù)雜性
    • 維護(hù)性
    • 多組件分離的必要性?
    • 伸縮性
    • 安全性
  • “復(fù)雜是萬(wàn)惡之源撩穿,學(xué)會(huì)停止焦慮磷支,愛(ài)上單體” —— Istio 開(kāi)發(fā)團(tuán)隊(duì)

架構(gòu) 1.5 版本

image.png
  • 重建控制平面
    • 整合為 istiod
    • 廢棄 Mixer
  • 添加新特性
  • 性能提升
  • Bug 修復(fù)

核心功能之流量控制:Istio是如何實(shí)現(xiàn)流量控制功能的?

Istio 的流量控制能力

主要功能:

  • 路由食寡、流量轉(zhuǎn)移
  • 流量進(jìn)出
  • 網(wǎng)絡(luò)彈性能力
  • 測(cè)試相關(guān)

核心資源(CRD):

  • 虛擬服務(wù)(Virtual Service)
  • 目標(biāo)規(guī)則(Destination Rule)
  • 網(wǎng)關(guān)(Gateway)
  • 服務(wù)入口(Service Entry)
  • Sidecar
image.png

虛擬服務(wù)(Virtual Service)

image.png
  • 將流量路由到給定目標(biāo)地址
  • 請(qǐng)求地址與真實(shí)的工作負(fù)載解耦
  • 包含一組路由規(guī)則
  • 通常和目標(biāo)規(guī)則(Destination Rule)成對(duì)出現(xiàn)
  • 豐富的路由匹配規(guī)則

目標(biāo)規(guī)則(Destination Rule)

image.png
  • 定義虛擬服務(wù)路由目標(biāo)地址的真實(shí)地址齐唆,即子集(subset)
  • 設(shè)置負(fù)載均衡的方式
    • 隨機(jī)
    • 權(quán)重
    • 最少請(qǐng)求數(shù)

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

image.png
  • 管理進(jìn)出網(wǎng)格的流量
  • 處在網(wǎng)格邊界

服務(wù)入口(Service Entry)

image.png
  • 把外部服務(wù)注冊(cè)到網(wǎng)格中
  • 功能:
    • 為外部目標(biāo)轉(zhuǎn)發(fā)請(qǐng)求
    • 添加超時(shí)重試等策略
    • 擴(kuò)展網(wǎng)格

Sidecar

image.png
  • 調(diào)整 Envoy 代理接管的端口和協(xié)議
  • 限制 Envoy 代理可訪問(wèn)的服務(wù)

網(wǎng)絡(luò)彈性和測(cè)試

彈性能力:

  • 超時(shí)
  • 重試
  • 熔斷

測(cè)試能力:

  • 故障注入
  • 流量鏡像

服務(wù)的可觀察性:如何理解服務(wù)可視化的重要性?

什么是可觀察性冻河?

  • 可觀察性 ≠ 監(jiān)控
  • 從開(kāi)發(fā)者的角度探究系統(tǒng)的狀態(tài)
  • 組成:指標(biāo)、日志茉帅、追蹤


    image.png

指標(biāo)(Metrics)

  • 以聚合的方式監(jiān)控和理解系統(tǒng)行為
  • Istio 中的指標(biāo)分類(lèi):
    • 代理級(jí)別的指標(biāo)(Proxy-level)
    • 服務(wù)級(jí)別的指標(biāo)(Service-level)
    • 控制平面指標(biāo)(Control plane)

代理級(jí)別的指標(biāo)

  • 收集目標(biāo):Sidecar 代理
  • 資源粒度上的網(wǎng)格監(jiān)控
  • 容許指定收集的代理(針對(duì)性的調(diào)試)


    image.png

服務(wù)級(jí)別的指標(biāo)

  • 用于監(jiān)控服務(wù)通信
  • 四個(gè)基本的服務(wù)監(jiān)控需求:延遲叨叙、流量、錯(cuò)誤堪澎、飽和
  • 默認(rèn)指標(biāo)導(dǎo)出到 Prometheus(可自定義和更改)
  • 可根據(jù)需求開(kāi)啟或關(guān)閉


    image.png

控制平面指標(biāo)

  • 對(duì)自身組件行為的監(jiān)控
  • 用于了解網(wǎng)格的健康情況


    image.png

訪問(wèn)日志(Access logs)

  • 通過(guò)應(yīng)用產(chǎn)生的事件來(lái)了解系統(tǒng)
  • 包括了完整的元數(shù)據(jù)信息(目標(biāo)擂错、源)
  • 生成位置可選(本地、遠(yuǎn)端樱蛤,如 filebeat)
  • 日志內(nèi)容
    • 應(yīng)用日志
    • Envoy 日志 $ kubectl logs -l app=demo -c istio-proxy

分布式追蹤(Distributed tracing)

image.png

  • 通過(guò)追蹤請(qǐng)求钮呀,了解服務(wù)的調(diào)用關(guān)系
  • 常用于調(diào)用鏈的問(wèn)題排查、性能分析等
  • 支持多種追蹤系統(tǒng)(Jeager昨凡、Zipkin爽醋、Datadog)

分布式追蹤示例

image.png


保衛(wèi)你的網(wǎng)格:Istio是如何設(shè)計(jì)安全架構(gòu)的?

Istio 的安全架構(gòu)

image.png

認(rèn)證

image.png
  • 認(rèn)證方式
  • 策略存儲(chǔ)
  • 支持兼容模式

認(rèn)證方式

  • 對(duì)等認(rèn)證(Peer authentication)
    • 用于服務(wù)間身份認(rèn)證
    • Mutual TLS(mTLS)
  • 請(qǐng)求認(rèn)證(Request authentication)
    • 用于終端用戶身份認(rèn)證
    • JSON Web Token(JWT)

認(rèn)證策略

image.png

  • 配置方式
  • 配置生效范圍
    • 網(wǎng)格
    • 命名空間
    • 工作負(fù)載(服務(wù))
  • 策略的更新

授權(quán)

image.png
  • 授權(quán)級(jí)別
  • 策略分發(fā)
  • 授權(quán)引擎
  • 無(wú)需顯式啟用

授權(quán)策略

image.png

  • 通過(guò)創(chuàng)建 AuthorizationPolicy 實(shí)現(xiàn)
  • 組成部分
    • 選擇器(Selector)
    • 行為(Action)
    • 規(guī)則列表(Rules)
      • 來(lái)源(from)
      • 操作(to)
      • 匹配條件(when)

授權(quán)策略的設(shè)置

image.png

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末便脊,一起剝皮案震驚了整個(gè)濱河市蚂四,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌哪痰,老刑警劉巖遂赠,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異晌杰,居然都是意外死亡跷睦,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)肋演,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)抑诸,“玉大人,你說(shuō)我怎么就攤上這事惋啃『喵蓿” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵边灭,是天一觀的道長(zhǎng)异希。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么称簿? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任黎棠,我火速辦了婚禮力麸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己舰罚,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布幅疼。 她就那樣靜靜地躺著凹嘲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪悔叽。 梳的紋絲不亂的頭發(fā)上莱衩,一...
    開(kāi)封第一講書(shū)人閱讀 51,190評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音娇澎,去河邊找鬼笨蚁。 笑死,一個(gè)胖子當(dāng)著我的面吹牛趟庄,可吹牛的內(nèi)容都是我干的括细。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼戚啥,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼奋单!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起猫十,我...
    開(kāi)封第一講書(shū)人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤辱匿,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后炫彩,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體匾七,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年江兢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了昨忆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡杉允,死狀恐怖邑贴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情叔磷,我是刑警寧澤拢驾,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站改基,受9級(jí)特大地震影響繁疤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一稠腊、第九天 我趴在偏房一處隱蔽的房頂上張望躁染。 院中可真熱鬧,春花似錦架忌、人聲如沸吞彤。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)饰恕。三九已至,卻和暖如春井仰,著一層夾襖步出監(jiān)牢的瞬間懂盐,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工糕档, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拌喉。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓速那,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親尿背。 傳聞我的和親對(duì)象是個(gè)殘疾皇子端仰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

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