在Play with Kubernetes平臺(tái)上以測(cè)試驅(qū)動(dòng)的方式部署Istio

Kubernetes and Istio

翻譯一篇 Istio 部署教程,原文鏈接:test-drive-your-first-istio-deployment-using-play-with-kubernetes-platform-cloud-computing


作為一名全棧開(kāi)發(fā)饿序,假如最近花了不少時(shí)間開(kāi)發(fā)應(yīng)用均蜜,肯定已經(jīng)理解了微服務(wù)架構(gòu)下要面臨的一系列全新挑戰(zhàn)。盡管應(yīng)用已經(jīng)從龐大的單體應(yīng)用轉(zhuǎn)變成了開(kāi)發(fā)更快潭辈、彈性更好、更小也更聚焦的微服務(wù),但現(xiàn)實(shí)是屉佳,開(kāi)發(fā)者需要開(kāi)始操心將這些服務(wù)集成到分布式系統(tǒng)中的問(wèn)題了,包括服務(wù)發(fā)現(xiàn)洲押、負(fù)載均衡武花、注冊(cè)、容錯(cuò)杈帐、監(jiān)控体箕、路由专钉、兼容和安全等。

讓我們更詳細(xì)的拆解微服務(wù)架構(gòu)下開(kāi)發(fā)和運(yùn)維面臨的挑戰(zhàn)吧累铅。先來(lái)看看第一代簡(jiǎn)單的 Service Mesh 場(chǎng)景跃须,如下圖所示,服務(wù) A 要和 服務(wù) B 通信娃兽,沒(méi)有采用直接通信的方式菇民,請(qǐng)求是通過(guò) NGINX 路由的。NGINX 從 Consul(服務(wù)發(fā)現(xiàn)工具)查找路由换薄,并在收到 HTTP 502 響應(yīng)時(shí)玉雾,自動(dòng)重試。

圖 1.0 - 一代 Service Mesh
圖 1.1 - 服務(wù)增多時(shí)轻要,級(jí)聯(lián)失敗演示

但隨著微服務(wù)架構(gòu)的到來(lái)复旬,服務(wù)數(shù)量的增長(zhǎng)一發(fā)不可收拾,下面列出的是開(kāi)發(fā)和運(yùn)維團(tuán)隊(duì)遇到的問(wèn)題:

  • 如何讓日益增長(zhǎng)的微服務(wù)們互聯(lián)冲泥?
  • 如何為微服務(wù)提供負(fù)載均衡驹碍?
  • 為微服務(wù)提供基于角色的路由;
  • 如何控制微服務(wù)的出口流量凡恍,如何實(shí)現(xiàn)灰度發(fā)布志秃?
  • 如何控制不斷增長(zhǎng)的微服務(wù)的復(fù)雜度?
  • 如何用富路由規(guī)則實(shí)現(xiàn)細(xì)粒度的流量控制嚼酝?
  • 實(shí)現(xiàn)流量加密浮还、服務(wù)到服務(wù)的鑒權(quán)和強(qiáng)身份聲明的挑戰(zhàn)

簡(jiǎn)而言之,雖然你可以在應(yīng)用和網(wǎng)絡(luò)中間件中開(kāi)啟服務(wù)發(fā)現(xiàn)和重試機(jī)制闽巩,但實(shí)際上钧舌,想讓服務(wù)發(fā)現(xiàn)正常工作是非常困難的。

初試 Istio Service Mesh

Service Mesh 是 2018 年度最火熱的流行詞之一涎跨,它是微服務(wù)的可配置基礎(chǔ)架構(gòu)層洼冻,負(fù)責(zé)微服務(wù)應(yīng)用間的交互,service mesh 讓微服務(wù)實(shí)例間的交互更靈活隅很、可靠和快速撞牢。Mesh 層提供了服務(wù)發(fā)現(xiàn)、負(fù)載均衡叔营、加密屋彪、鑒權(quán)和驗(yàn)證,支持熔斷機(jī)制等其他能力绒尊。

Istio 是完全開(kāi)源的撼班,可透明的部署在已有的分布式應(yīng)用上。Istio 1.0 版本在上個(gè)月發(fā)布垒酬,已經(jīng)生產(chǎn)環(huán)境可用砰嘁。Istio 完全由 Go 語(yǔ)言編寫(xiě)件炉,提供成熟的 API 接口可以接入到任何日志平臺(tái)、遙測(cè)和策略系統(tǒng)中矮湘。Istio 在 GitHub 上發(fā)布斟冕,對(duì)系統(tǒng)的性能影響很小,豐富的特性讓你可以順利缅阳、高效的運(yùn)行分布式微服務(wù)架構(gòu)磕蛇,并提供統(tǒng)一的保護(hù)、連接和監(jiān)控方法十办。

圖 1.2 Istio 功能

Istio 對(duì)系統(tǒng)的影響很小秀撇,它在 GitHub 上發(fā)布,上個(gè)月向族,Istio 1.0 版本已經(jīng)發(fā)布呵燕,并且生產(chǎn)環(huán)境可用。

Istio 能帶來(lái)什么好處呢件相?

  • Istio 提供服務(wù)的連接再扭、保護(hù)、控制和觀測(cè)能力夜矗。
  • 減少服務(wù)部署的復(fù)雜度泛范,減輕部署團(tuán)隊(duì)的壓力。
  • 在無(wú)需修改應(yīng)用代碼的前提下紊撕,為開(kāi)發(fā)和開(kāi)發(fā)運(yùn)維提供了細(xì)粒度的流量可視化和控制罢荡。
  • 為 CIO 提供了幫助全企業(yè)安全實(shí)施和合規(guī)型需求的必要工具。
  • 在 service mesh 層提供了統(tǒng)一的行為監(jiān)測(cè)和運(yùn)營(yíng)控制对扶。
  • Istio 讓為服務(wù)網(wǎng)絡(luò)提供 HTTP区赵、gRPC、Web Socket 和 TCP 流量的自動(dòng)負(fù)載均衡變的輕松辩稽。
  • 提供了細(xì)粒度的流量行為控制惧笛,包括:富路由規(guī)則从媚、重試逞泄、故障轉(zhuǎn)移和失敗注入。
  • 支持插件化的策略控制層和配置 API拜效,支持訪問(wèn)控制喷众、流量限制和配額。
  • Istio 為集群內(nèi)的全部流量提供自動(dòng)的度量紧憾、日志到千、追蹤,包括進(jìn)群的入口和出口赴穗。
  • 以強(qiáng)身份驗(yàn)證和鑒權(quán)的方式憔四,提供了集群內(nèi)安全的服務(wù)間通信膀息。
  • 如何想深入 Istio 架構(gòu),我強(qiáng)烈推薦 Istio 官方網(wǎng)站(https://istio.io/zh)了赵。
image

開(kāi)始演示G敝А!柿汛!

在這篇文章中冗酿,我將展示如何在 Play with Kubernetes(PWK)中免費(fèi)部署 Istio,這是個(gè)由 Docker 提供的實(shí)驗(yàn)網(wǎng)站络断,是讓用戶在幾秒鐘內(nèi)跑起來(lái) Kubernetes 集群的試驗(yàn)環(huán)境裁替。PWK 提供了在瀏覽器中使用免費(fèi) CentOS Linux 虛擬機(jī)的體驗(yàn),實(shí)際上是 Docker-in-Docker(DinD)技術(shù)模擬了多虛擬機(jī)/PC 的效果貌笨。

打開(kāi) https://labs.play-with-k8s.com/弱判,訪問(wèn) Kubernetes Playground。

image

點(diǎn)擊 "Login" 按鈕躁绸,以 Docker Hub 或 GitHub ID 登陸裕循。

image

完成本教程,你將獲得自己的實(shí)驗(yàn)環(huán)境净刮。

添加第一個(gè) Kubernetes 節(jié)點(diǎn)

點(diǎn)擊左側(cè)的 "Add New Instance" 來(lái)構(gòu)建你的第一個(gè) Kubernetes 集群節(jié)點(diǎn)剥哑,自動(dòng)命名為 "node1",每個(gè)節(jié)點(diǎn)都預(yù)裝來(lái) Docker 社區(qū)版(CE)和 Kubeadm淹父。這個(gè)節(jié)點(diǎn)將成為集群的主節(jié)點(diǎn)株婴。


image

啟動(dòng)主節(jié)點(diǎn)

用如下腳本初始化主節(jié)點(diǎn)(node1)來(lái)啟動(dòng) Kubernetes 集群,復(fù)制該腳本內(nèi)容到文件 bootstrap.sh暑认,并執(zhí)行命令添加可執(zhí)行權(quán)限:chmod +x bootstrap.sh

image

執(zhí)行腳本時(shí)困介,作為初始化的一部分,kubeadm 會(huì)寫(xiě)入幾個(gè)必要的配置文件蘸际、設(shè)置 RBAC 并部署 Kubernetes 控制平面組件(例如 kube-apiserver座哩、kube-dns、kube-proxy粮彤、etcd 等)根穷。控制平面組件以 docker 容器形式部署导坟。

image

復(fù)制上面的 kubeadm join token 命令屿良,留作下步使用,此命令用來(lái)在集群中加入其他節(jié)點(diǎn)惫周。

添加從節(jié)點(diǎn)

點(diǎn)擊 "Add New Node" 添加新的從節(jié)點(diǎn)

image

驗(yàn)證集群狀態(tài)

image

驗(yàn)證運(yùn)行的 Pods

image

安裝 Istio 1.0.0

Istio 部署在單獨(dú)的 Kubernetes 命名空間里:istio-system尘惧,我們過(guò)后再來(lái)驗(yàn)證。現(xiàn)在递递,復(fù)制如下內(nèi)容到文件喷橙,命名為 install_istio.sh啥么,并保存。添加可執(zhí)行權(quán)限贰逾,運(yùn)行以安裝 Istio 和相關(guān)工具饥臂。

image

屏幕上應(yīng)顯示如下內(nèi)容:

image

如上所示,默認(rèn)會(huì)安裝 Prometheus似踱、ServiceGraph隅熙、Jaeger、Grafana 和 Zipkin核芽。

請(qǐng)注意:運(yùn)行該腳本時(shí)囚戚,可能會(huì)報(bào)如下錯(cuò)誤:

unable to recognize "install/kubernetes/istio-demo.yaml": no matches for admissionregistration.k8s.io/, Kind=MutatingWebhookConfiguration

這是正常的,命令一執(zhí)行完轧简,可在頁(yè)面的中央看到一長(zhǎng)串展示的端口驰坊。

image
image

驗(yàn)證服務(wù)

image

暴露服務(wù)

要暴露 Prometheus、Grafana 和 服務(wù)圖標(biāo)服務(wù)哮独,需要先刪除已有的服務(wù)拳芙,用 NodePort 替換 ClusterIP,用實(shí)例頁(yè)頂端展示的端口訪問(wèn)服務(wù)(如下所示)皮璧。

image
image

點(diǎn)擊 "30004" 訪問(wèn) Grafana 頁(yè)舟扎,點(diǎn)擊 "30003" 訪問(wèn) Prometheus 頁(yè)。

image
image

可以如下圖所示悴务,選擇必要配置查看 Prometheus 度量:

image

在 Grafana 頁(yè)睹限,添加 Prometheus 數(shù)據(jù)源,并確認(rèn) Dashboard 已經(jīng)運(yùn)行讯檐。

image

恭喜羡疗!你已經(jīng)將 Istio 部署在 Kubernetes 集群上了,K8S playgroud 上已經(jīng)安裝的服務(wù)包括:

  • Istio Controllers别洪,以及相關(guān) RBAC 規(guī)則
  • Istio 定制資源定義
  • Prometheus 和 Grafana 監(jiān)控系統(tǒng)
  • Jeager 分布式追蹤系統(tǒng)
  • Istio Sidecar 注入程序(下一節(jié)我們?cè)賮?lái)仔細(xì)看看)

安裝 Istioctl

Istioctl 是 Istio 的命令行配置工具叨恨,可以用來(lái)創(chuàng)建、查詢挖垛、修改和刪除 Istio 系統(tǒng)的配置資源痒钝。

image

部署 BookInfo 應(yīng)用示例

Istio 已經(jīng)安裝并驗(yàn)證過(guò)了,可以在上面部署示例應(yīng)用 BookInfo 了晕换,這是一個(gè)簡(jiǎn)單的書(shū)店模擬應(yīng)用午乓,由四個(gè)服務(wù)組成:網(wǎng)站首頁(yè)站宗、書(shū)籍信息闸准、評(píng)論(幾個(gè)特定的版本有評(píng)論服務(wù))和評(píng)分,全部由 Isito 管理梢灭。

部署 BookInfo 服務(wù)

image

定義入口網(wǎng)關(guān)

image

驗(yàn)證 BookInfo 應(yīng)用

image
image

通過(guò) URL 訪問(wèn)

image

現(xiàn)在應(yīng)該可以看到 BookInfo 示例了:

image

希望本部程能幫你順利的在 Kubernetes 上部署 Istio夷家。下一篇博客蒸其,我將深入 Isito 的內(nèi)部架構(gòu)、流量控制库快、權(quán)限和遙測(cè)等細(xì)節(jié)摸袁。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市义屏,隨后出現(xiàn)的幾起案子靠汁,更是在濱河造成了極大的恐慌,老刑警劉巖闽铐,帶你破解...
    沈念sama閱讀 212,222評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蝶怔,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡兄墅,警方通過(guò)查閱死者的電腦和手機(jī)踢星,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)隙咸,“玉大人沐悦,你說(shuō)我怎么就攤上這事∥宥剑” “怎么了藏否?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,720評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)充包。 經(jīng)常有香客問(wèn)我秕岛,道長(zhǎng),這世上最難降的妖魔是什么误证? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,568評(píng)論 1 284
  • 正文 為了忘掉前任继薛,我火速辦了婚禮,結(jié)果婚禮上愈捅,老公的妹妹穿的比我還像新娘遏考。我一直安慰自己,他們只是感情好蓝谨,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,696評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布灌具。 她就那樣靜靜地躺著,像睡著了一般譬巫。 火紅的嫁衣襯著肌膚如雪咖楣。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,879評(píng)論 1 290
  • 那天芦昔,我揣著相機(jī)與錄音诱贿,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛珠十,可吹牛的內(nèi)容都是我干的料扰。 我是一名探鬼主播,決...
    沈念sama閱讀 39,028評(píng)論 3 409
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼焙蹭,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼晒杈!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起孔厉,我...
    開(kāi)封第一講書(shū)人閱讀 37,773評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤拯钻,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后撰豺,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體说庭,經(jīng)...
    沈念sama閱讀 44,220評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,550評(píng)論 2 327
  • 正文 我和宋清朗相戀三年郑趁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了刊驴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,697評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡寡润,死狀恐怖捆憎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情梭纹,我是刑警寧澤躲惰,帶...
    沈念sama閱讀 34,360評(píng)論 4 332
  • 正文 年R本政府宣布,位于F島的核電站变抽,受9級(jí)特大地震影響础拨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜绍载,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,002評(píng)論 3 315
  • 文/蒙蒙 一诡宗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧击儡,春花似錦塔沃、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,782評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至矫夯,卻和暖如春鸽疾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背训貌。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,010評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工制肮, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,433評(píng)論 2 360
  • 正文 我出身青樓弄企,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親区拳。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拘领,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,587評(píng)論 2 350

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