如何使用Rancher2.0在Kubernetes集群上部署Istio

這篇文章給大家介紹如何使用Rancher 2.0在Kubernetes集群上部署Istio,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

創(chuàng)新互聯(lián)建站2013年開創(chuàng)至今,先為鎮(zhèn)江等服務(wù)建站,鎮(zhèn)江等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為鎮(zhèn)江企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

Service mesh旨在解決云原生應(yīng)用之間服務(wù)拓?fù)涞倪B接問(wèn)題。如果你想要構(gòu)建云原生應(yīng)用,那么就需要Service mesh。Istio是Service mesh中的一個(gè)明星項(xiàng)目,在Istio文檔中對(duì)其有非常全面的介紹:https://istio.io/docs/concepts/what-is-istio/。Istio基于Envoy Proxy,是一個(gè)極其有前景的Service mesh解決方案,有多家科技巨頭對(duì)其進(jìn)行聯(lián)合開發(fā)。

目前,Istio最適合Kubernetes,但未來(lái)也會(huì)支持其他平臺(tái)。因此,為了部署Istio并且展示其功能,首先需要一個(gè)Kubernetes集群。滿足這一條件之后,使用Rancher 2.0將十分容易。

前期準(zhǔn)備

為了能夠順利demo,你需要做如下準(zhǔn)備:

  • 一個(gè)Google Cloud賬號(hào),免費(fèi)的即可

  • 一個(gè)Ubuntu 16.04實(shí)例(這將是Rancher實(shí)例的運(yùn)行環(huán)境)

  • 一個(gè)部署于Google Cloud Platform并且使用GKE服務(wù)的Kubernetes集群。本次demo使用的是1.10.5-gke.2版本

  • Istio 0.8.0(這是本文成稿時(shí)使用的版本,現(xiàn)在Istio 1.0已發(fā)布)

一般情況下,本教程中的步驟對(duì)于更新的版本也適用。

啟動(dòng)Rancher 2.0

首先,啟動(dòng)一個(gè)Rancher 2.0實(shí)例。關(guān)于如何啟動(dòng)Rancher 2.0,可以參考Rancher官網(wǎng)上的入門教程,非常簡(jiǎn)潔直觀(https://rancher.com/quick-start/)。必要的步驟也會(huì)在下文中列出。

本文示例將使用Google Cloud Platform,所以我們首先啟動(dòng)一個(gè)Ubuntu實(shí)例并且通過(guò)Console 或者CLI(https://cloud.google.com/compute/docs/instances/create-start-instance )。使用HTTP和HTTPs協(xié)議與其通信。實(shí)現(xiàn)上述目的的命令如下:

如何使用Rancher 2.0在Kubernetes集群上部署Istio

請(qǐng)確保Rancher 實(shí)例至少有1 vCPU和大約4GB的RAM可用。

接著,通過(guò)ssh登錄到Ubuntu實(shí)例并且安裝Docker(https://docs.docker.com/install/linux/docker-ce/ubuntu/ )。Docker安裝完成之后,即可啟動(dòng)Rancher驗(yàn)證其是否正在運(yùn)行。

如何使用Rancher 2.0在Kubernetes集群上部署Istio

獲得Ubuntu實(shí)例的公共IP地址,并用你的瀏覽器訪問(wèn)它。

如何使用Rancher 2.0在Kubernetes集群上部署Istio

接著頁(yè)面會(huì)重新跳轉(zhuǎn)到Rancher的HTTPs協(xié)議頁(yè)面上,并且你將看到瀏覽器的警告。因?yàn)镽ancher使用的是自簽名證書。不需要理會(huì)這些警告,因?yàn)槟阋呀?jīng)啟動(dòng)了實(shí)例(千萬(wàn)不要在不受信任的網(wǎng)站上進(jìn)行這項(xiàng)操作),接下來(lái)開始設(shè)置管理員密碼和服務(wù)器URL來(lái)啟動(dòng)Rancher 2.0。下面就可以開始啟動(dòng)Kubernetes集群了。

啟動(dòng)一個(gè)Kubernetes集群

首先,你需要一個(gè)附加以下角色的Google云服務(wù)賬號(hào):Compute Viewer,Kubernetes Engine Admin, Service Account User, Project Viewer。接著,你需要生成服務(wù)賬戶密鑰,具體步驟請(qǐng)參考:https://cloud.google.com/iam/docs/creating-managing-service-account-keys

現(xiàn)在你可以用你的服務(wù)賬戶密鑰來(lái)使用Rancher 2.0啟動(dòng)一個(gè)Kubernetes集群(使用默認(rèn)的Compute Engine服務(wù)帳戶是安全的):

如何使用Rancher 2.0在Kubernetes集群上部署Istio

請(qǐng)留意<SA-NAME>@developer.gserviceaccount.com值,你稍后還會(huì)用到它。

現(xiàn)在,你已經(jīng)做好啟動(dòng)集群的準(zhǔn)備工作了。打開Rancher的面板,然后點(diǎn)擊【添加集群/Add Cluster】。你需要執(zhí)行以下操作:

在選擇Kubernetes托管服務(wù)提供商時(shí),選擇GCE;

為你的集群起一個(gè)名字,比如rancher-demo;

將服務(wù)密鑰詳細(xì)信息從上述步驟中生成的key.json文件導(dǎo)出或復(fù)制粘貼到Service Account字段中。

接著去【配置節(jié)點(diǎn)/Configure Nodes】選項(xiàng)并按如下選擇:

  • Kubernetes版本的選擇,你可以選擇最新版本,不過(guò)本測(cè)試是在1.10.5-gke.2版本上進(jìn)行的;

  • 區(qū)域的選擇,選擇離你最近的區(qū)域;

  • 機(jī)器類型的選擇,至少需要 n1-standard-1;

  • 至于節(jié)點(diǎn)數(shù),對(duì)于Istio Demo來(lái)說(shuō),至少需要4個(gè)節(jié)點(diǎn)。

當(dāng)上述內(nèi)容設(shè)置完成之后,你的設(shè)置頁(yè)面如下圖所示:

如何使用Rancher 2.0在Kubernetes集群上部署Istio

幾分鐘之后,你可以在Rancher的面板上看到集群處于活躍狀態(tài)。還記得上文提到的<SA-NAME>@developer.gserviceaccount.com值嗎?現(xiàn)在它要派上用場(chǎng)了。你需要用它來(lái)授予當(dāng)前用戶群集管理員權(quán)限(需要管理員權(quán)限才能為Istio創(chuàng)建必要的RBAC規(guī)則)。為此,你需要點(diǎn)擊Rancher面板上rancher-demo的集群名字,然后進(jìn)入rancher-demo的集群面板。

現(xiàn)在啟動(dòng)kubectl,這將打開這個(gè)特定群集的kubectl命令行。你還可以導(dǎo)出Kubeconfig文件,與本地安裝的kubectl一起使用。基于本次實(shí)例的目的,使用Rancher提供的命令行就可以了。你打開了命令行之后,運(yùn)行下列命令:

如何使用Rancher 2.0在Kubernetes集群上部署Istio

在Rancher上部署Istio

Istio有一個(gè)Helm包,Rancher可以用它安裝Istio。想要獲得官方的Istio Helm包,需要將Istio的庫(kù)添加到Rancher的應(yīng)用目錄里。為此,首先要訪問(wèn)Rancher Global View,進(jìn)入目錄選項(xiàng),并選擇【添加目錄】,名字填寫istio-github,目錄URL為https://github.com/istio/istio.git (Rancher可以處理git clone處理的任何事情),在Branch的部分,你可以寫branch名字,并將其設(shè)置為master。設(shè)置完成后,應(yīng)該如下截圖所示:

如何使用Rancher 2.0在Kubernetes集群上部署Istio

點(diǎn)擊【創(chuàng)建/Create】。

在這一步,你將開始使用Rancher Catalog部署Istio。首先,訪問(wèn)rancher-demo集群的默認(rèn)項(xiàng)目,并且選擇目錄應(yīng)用。當(dāng)你點(diǎn)擊【啟動(dòng)/Launch】之后,你將看到許多默認(rèn)可用的應(yīng)用。由于此demo是關(guān)于Istio的,在【所有目錄/All Catalogs】中選擇istio-github目錄,也就是你剛剛自行創(chuàng)建的那個(gè)。這將為您提供兩個(gè)選項(xiàng):istio和istio-remote。選擇istio并點(diǎn)擊【查看詳情/View Details】,你將看到部署Istio的選項(xiàng),按如下選擇:

設(shè)置名字為istio-demo;

讓模板版本保持為0.8.0;

默認(rèn)的istio的命名空間是istio-system,因此這里就將命名空間設(shè)置為istio-system;

在默認(rèn)情況下,Istio不會(huì)加密組件之間的訪問(wèn),但加密功能挺重要的,因此我們需要把加密這一功能加上,;

Istio的helm chart默認(rèn)不添加Grafana,我們也應(yīng)該把它加上。

點(diǎn)擊Add Answer,將global.controlPlaneSecurityEnabled和grafana.enabled的值設(shè)置為true。即可添加上述功能。

完成上述操作之后,界面應(yīng)該如下圖所示:

如何使用Rancher 2.0在Kubernetes集群上部署Istio

點(diǎn)擊【啟動(dòng)/Launch】。

如果你現(xiàn)在看到工作負(fù)載的標(biāo)簽,那么你應(yīng)該能看到Istio的所有組件正在你的集群里運(yùn)行,同時(shí)請(qǐng)確保所有的工作負(fù)載都是綠色的。此外,還需要檢查負(fù)載均衡標(biāo)簽,istio-ingress和istio-ingressgateway都應(yīng)該處于活躍狀態(tài)。

如果istio-ingressgateway處于待定(Pending)狀態(tài),那么你需要再次申請(qǐng)istio-ingressgateway服務(wù)。具體步驟是:點(diǎn)擊Import Yaml;對(duì)于Import Mode,選擇【集群:將任何資源直接導(dǎo)入此集群】Cluster: Direct import of any resources into this cluster;將 istio-demo-ingressgateway.yaml 服務(wù)復(fù)制/粘貼到 Import Yaml 編輯器并點(diǎn)擊導(dǎo)入:

這一步驟將解決 istio-ingressgateway待定狀態(tài)的問(wèn)題。

現(xiàn)在,你需要在Rancher的面板上檢查Istio所有的工作負(fù)載、負(fù)載均衡以及服務(wù)發(fā)現(xiàn)均處于良好狀態(tài)。

最后還有一樣?xùn)|西需要添加:在你的默認(rèn)命名空間里添加一個(gè)istio-injected標(biāo)簽,Istio sidecar容器會(huì)自動(dòng)注入你的節(jié)點(diǎn),運(yùn)行下方的kubectl命令(如上文所述,你可以從Rancher內(nèi)部啟動(dòng)kubectl)。

如何使用Rancher 2.0在Kubernetes集群上部署Istio

這一標(biāo)簽將使得Istio-Sidecar-Injector自動(dòng)將Envoy容器注入您的應(yīng)用程序節(jié)點(diǎn)。

部署B(yǎng)ookinfo示例應(yīng)用

現(xiàn)在,你可以開始部署一個(gè)測(cè)試應(yīng)用并且測(cè)試Istio的強(qiáng)大功能。首先,部署B(yǎng)ookinfo示例應(yīng)用。這個(gè)應(yīng)用有趣的部分在于它有三個(gè)版本的reviews程序同時(shí)運(yùn)行。我們可-以在這三個(gè)版本的程序中體驗(yàn)到Istio的一些功能。接著,訪問(wèn)rancher-demo的默認(rèn)項(xiàng)目中的工作負(fù)載來(lái)部署B(yǎng)ookinfo app,具體的操作是:

點(diǎn)擊Import Yaml;下載bookinfo.yaml(https://info.rancher.com/hubfs/bookinfo.yaml)到本地;

當(dāng)你進(jìn)入Import Yaml菜單之后,通過(guò)從文件讀取,將其上傳至Rancher;

對(duì)于 Import Mode,選擇【集群:將任何資源直接導(dǎo)入此集群】Cluster: Direct import of any resources into this cluster;

點(diǎn)擊【導(dǎo)入/Import】。

這應(yīng)該為您的rancher-demo Default項(xiàng)目增加6個(gè)工作負(fù)載。如下圖:

如何使用Rancher 2.0在Kubernetes集群上部署Istio

現(xiàn)在,通過(guò)Istio暴露Bookinfo app,你需要應(yīng)用此bookinfo-gateway.yaml(https://info.rancher.com/hubfs/bookinfo-gateway.yaml),操作方式與bookinfo.yaml相同。此時(shí),你可以用瀏覽器訪問(wèn)bookinfo app。你有兩種方式可以獲取istio-ingressgateway負(fù)載均衡器的外部IP地址:

第一,從Rancher中獲取。訪問(wèn)負(fù)載均衡,從右手邊的菜單欄選擇View in API。它將打開一個(gè)新的瀏覽器頁(yè)面,在那搜索publicEndpoints -> addresses,你就可以看到公共IP地址了。

第二,通過(guò)kubectl獲取:

如何使用Rancher 2.0在Kubernetes集群上部署Istio

用你的瀏覽器訪問(wèn): http://${INGRESS_HOST}/productpage ,然后你應(yīng)該看到Bookinfo app。多次刷新頁(yè)面時(shí),你應(yīng)該看到 Book Reviews部分有三個(gè)不同版本:第一個(gè)版本沒(méi)有星星;第二個(gè)版本有黑星星;第三個(gè)版本有紅星星。

使用Istio,您可以限制您的應(yīng)用僅路由到應(yīng)用的第一個(gè)版本。具體操作為:導(dǎo)入 route-rule-all-v1.yaml( https://info.rancher.com/hubfs/route-rule-all-v1.yaml )到Rancher,幾秒之后再刷新頁(yè)面,你將不會(huì)在reviews上看到任何星星。

除此之外,你也可以僅將流量路由到一組用戶。當(dāng)你導(dǎo)入route-rule-reviews-test-v2.yaml到Rancher之后,使用jason這個(gè)用戶名(無(wú)需密碼)登錄Bookinfo app,你應(yīng)該只能看到版本2的reviews(即有黑星星的版本)。但登出之后,你僅能看到版本1reviews的app。

至此,你已經(jīng)體會(huì)了Istio的強(qiáng)大功能。當(dāng)然,這并非全部,Istio還有很多其他功能。創(chuàng)建此設(shè)置后,您可以完成Istio文檔中的任務(wù)。

Istio的遙感

現(xiàn)在是時(shí)候深入了解Istio另一個(gè)更有用的功能 :默認(rèn)情況下提供指標(biāo)。

讓我們從Grafana開始。當(dāng)我們部署Istio時(shí),值設(shè)置為true的grafana.enabled創(chuàng)建了一個(gè)grafana實(shí)例,并配置為收集Istio的指標(biāo)以幾個(gè)面板中顯示它們。默認(rèn)情況下,Grafana的服務(wù)不會(huì)公開顯示,因此想要查看指標(biāo),首先需要將Grafana的服務(wù)暴露給公共IP地址。當(dāng)然,還有另一個(gè)選項(xiàng)也可以暴露服務(wù):NodePort(https://kubernetes.io/docs/concepts/services-networking/service/#nodeport ),但是這要求你在Google Cloud Platform防火墻的所有節(jié)點(diǎn)上開放Nodeport,這不止有一項(xiàng)任務(wù),因此通過(guò)公共IP地址暴露服務(wù)更為簡(jiǎn)單。

為此,在rancher-demo的默認(rèn)項(xiàng)目中訪問(wèn)工作負(fù)載并選擇【服務(wù)發(fā)現(xiàn)】標(biāo)簽。當(dāng)所有在集群上的工作都完成之后,應(yīng)該有5項(xiàng)服務(wù)在默認(rèn)的命名空間內(nèi),有12項(xiàng)服務(wù)在istio-system命名空間內(nèi),并且所有這些服務(wù)都處于活躍狀態(tài)。接著,選擇grafana服務(wù),并且從右邊的菜單欄內(nèi)選擇 View/Edit YAML。

如何使用Rancher 2.0在Kubernetes集群上部署Istio

找到包含type: ClusterIP的那行,將其改為type: LoadBalancer,并點(diǎn)擊【保存/Save】。然后它應(yīng)該開始在Google Cloud Platform中配置負(fù)載均衡器,并在其默認(rèn)端口3000上暴露Grafana。如果想要獲取Grafana的公共IP地址的話,只需重復(fù)bookinfo示例中獲取IP地址的步驟即可,即在API中查看grafana服務(wù),你可以在其中找到IP地址,或通過(guò)kubectl獲取它:

如何使用Rancher 2.0在Kubernetes集群上部署Istio

用你的瀏覽器訪問(wèn):http://${GRAFANA_HOST}:3000/ ,選擇其中一個(gè)面板,比如 Istio Service。通過(guò)此前應(yīng)用的配置,我們限制了流量,僅顯示版本1的reveiws應(yīng)用。從服務(wù)的下拉菜單中選擇 reviews.default.svc.cluster.local,就可以從圖表中查看?,F(xiàn)在使用以下命令從Rancher的kubectl生成一些流量:

如何使用Rancher 2.0在Kubernetes集群上部署Istio

需要等待約5分鐘,為Grafana生成的流量將會(huì)顯示在如下面板上:

如何使用Rancher 2.0在Kubernetes集群上部署Istio

如果你滾動(dòng)面板,在SERVICE WORKLOADS下你將看到Incoming Requests by Destination And Response Code的圖表,它要求Reviews應(yīng)用程序只在v1端點(diǎn)結(jié)束。如果你使用以下命令,生成對(duì)版本2的應(yīng)用的請(qǐng)求(請(qǐng)記得用戶jason可以訪問(wèn)版本2的reviews 應(yīng)用):

如何使用Rancher 2.0在Kubernetes集群上部署Istio

你應(yīng)該也可以看到顯示在版本2的應(yīng)用上的請(qǐng)求:

如何使用Rancher 2.0在Kubernetes集群上部署Istio

用同樣的方式,也可能可以暴露并且看到Istio其他默認(rèn)的指標(biāo),比如Prometheus, Tracing 和ServiceGraph。

關(guān)于如何使用Rancher 2.0在Kubernetes集群上部署Istio就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

本文題目:如何使用Rancher2.0在Kubernetes集群上部署Istio
URL分享:http://muchs.cn/article20/gesijo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、小程序開發(fā)移動(dòng)網(wǎng)站建設(shè)、Google品牌網(wǎng)站設(shè)計(jì)、定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司