怎么進(jìn)行Istio服務(wù)網(wǎng)格部署實(shí)踐

怎么進(jìn)行Istio服務(wù)網(wǎng)格部署實(shí)踐,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

創(chuàng)新互聯(lián)專(zhuān)注為客戶(hù)提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、邵東網(wǎng)絡(luò)推廣、成都小程序開(kāi)發(fā)、邵東網(wǎng)絡(luò)營(yíng)銷(xiāo)、邵東企業(yè)策劃、邵東品牌公關(guān)、搜索引擎seo、人物專(zhuān)訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供邵東建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:bm7419.com

作為處理服務(wù)通訊的基礎(chǔ)設(shè)施層,ServiceMesh 技術(shù)通過(guò)引入輕量級(jí)網(wǎng)絡(luò)代理,實(shí)現(xiàn)了服務(wù)訪問(wèn)、流量治理、可觀察性等關(guān)鍵功能,受到了社區(qū)的高度關(guān)注。Istio 是開(kāi)源的 ServiceMesh 產(chǎn)品,提供了一個(gè)完整的滿(mǎn)足微服務(wù)應(yīng)用多種需求的解決方案。

項(xiàng)目基于最新發(fā)布的 Istio1.7.3 版本,從安裝和部署出發(fā),介紹 Istio 的安裝部署過(guò)程,并結(jié)合 Bookinfo 示例應(yīng)用,方便讀者認(rèn)識(shí) Istio 的各個(gè)組件及其功能。

準(zhǔn)備工作

Kubernetes 集群

在安裝之前,需要首先準(zhǔn)備一套可用的 Kubernetes 集群,這里我們使用 Istio 1.7.3 進(jìn)行安裝,官方推薦的 Kubernetes 版本包括 1.16, 1.17, 1.18。

本文使用的是百度智能云提供的容器引擎服務(wù) CCE,該服務(wù)提供了對(duì)容器的生命周期管理,能夠滿(mǎn)足 Istio 的安裝部署要求。選用的 Kubernetes 版本是 1.16.8,包括兩個(gè)節(jié)點(diǎn),配置為 CentOS 7.3 x86_64 (64bit),4核12G。

Istio 安裝文件

下載 Istio,下載內(nèi)容包括安裝文件、示例和 istioctl 命令行工具。

1、這里我們使用 MAC 系統(tǒng),可以通過(guò)以下命令下載最新版本的 Istio:

$ curl -L https://istio.io/downloadIstio | sh -

也可以直接訪問(wèn) Istio release(https://github.com/istio/istio/releases/tag/1.7.3) 頁(yè)面下載與當(dāng)前操作系統(tǒng)對(duì)應(yīng)的安裝文件。

注意:當(dāng)前的最新版本為 1.7.3,如果需要下載安裝歷史版本,在命令行中指定環(huán)境變量 ISTIO_VERSION 即可,如果下載特定系統(tǒng)架構(gòu)的安裝包,則需要設(shè)置環(huán)境變量 TARGET_ARCH。

2、切換到 Istio 包所在目錄。這里我們的目錄名為 istio-1.7.3,該安裝目錄包含如下內(nèi)容:

$ cd istio-1.7.3/
  • manifests/ 目錄:安裝 istio 相關(guān)的清單文件,包括 charts、profiles 等

  • samples/ 目錄:包含一組示例應(yīng)用,覆蓋多種應(yīng)用場(chǎng)景

  • bin/ 目錄:包含 istioctl 的客戶(hù)端文件。istioctl 命令行工具用于手動(dòng)注入 Envoy sidecar 代理

  • tools/ 目錄:istio 安裝和使用過(guò)程相關(guān)的腳本

將 istioctl 客戶(hù)端路徑增加到 path 環(huán)境變量中,在 MAC 系統(tǒng)下執(zhí)行以下命令:

$ export PATH=$PWD/bin:$PATH

Istio部署實(shí)踐


Istio 主要提供了以下三種安裝方式,用戶(hù)可以根據(jù)自己的實(shí)際需要進(jìn)行選擇。

1、使用 Istioctl 安裝:istioctl 是支持多種自定義選項(xiàng)的的命令行工具,用戶(hù)可以靈活配置,實(shí)現(xiàn) Istio 組件的定制化安裝。Istio 官方推薦使用該方式進(jìn)行安裝部署,可用于生產(chǎn)環(huán)境。

2、使用 Helm 自定義安裝:這種安裝方式使用 Helm charts 定義 Istio 的安裝選項(xiàng),目前該安裝方式已被棄用。

3、安裝獨(dú)立的 Operator:該方式使用獨(dú)立的 Istio operator 來(lái)安裝 istio,以聲明式的方式管理安裝配置,目前仍處于實(shí)驗(yàn)階段,不推薦在生產(chǎn)環(huán)境使用。

下面我們以 istioctl 安裝方式為主,介紹istio的安裝步驟和組件信息。

部署 Istio

1、使用 demo 配置文件進(jìn)行安裝

Istio 官方提供了針對(duì)不同場(chǎng)景的配置文件,這些內(nèi)置的配置文件提供了對(duì) Istio 控制平面和數(shù)據(jù)平面的定制內(nèi)容。用戶(hù)可以根據(jù)實(shí)際場(chǎng)景選擇特定的配置文件,然后結(jié)合自定義選項(xiàng)完成定制化安裝。當(dāng)前提供以下幾種內(nèi)置配置文件包括:

  • default: 根據(jù)默認(rèn)的安裝選項(xiàng)啟用組件,建議用于生產(chǎn)環(huán)境的部署。

  • demo: 用于展示 Istio 的基本功能,支持運(yùn)行 Bookinfo 應(yīng)用程序和相關(guān)任務(wù)。

  • minimal:使用 Istio 的流量管理功能所需的最少組件。

  • remote:用于配置多集群服務(wù)網(wǎng)格場(chǎng)景下的遠(yuǎn)程集群。

  • empty:不部署任何組件,可用于自定義配置的基礎(chǔ)文件。

  • preview:包含實(shí)驗(yàn)性功能,用于探索 Istio 新功能,但無(wú)法保證穩(wěn)定性。

在選定上述配置文件之后,可以在安裝 Istio 時(shí)在命令行添加一個(gè)或多個(gè) --set <key>=<value> 選項(xiàng),完成 Istio 安裝插件的其他選項(xiàng)配置。

這里為了測(cè)試方便,我們直接使用內(nèi)置的 demo 配置文件進(jìn)行安裝,執(zhí)行以下命令即可:

$ istioctl install --set profile=demoDetected that your cluster does not support third party JWT authentication. Falling back to less secure first party JWT. See https://istio.io/docs/ops/best-practices/security/#configure-third-party-service-account-tokens for details.? Istio core installed? Istiod installed? Egress gateways installed? Ingress gateways installed? Installation complete

該命令表示在 Kubernetes 集群上按照 default 配文件的描述安裝 Istio 組件。 

2、查看組件狀態(tài)

然后查看 Kubernetes 服務(wù)是否已經(jīng)成功創(chuàng)建:

$ kubectl  get svc -n istio-systemNAME                   TYPE           CLUSTER-IP       EXTERNAL-IP    PORT(S)                                                                      AGEistio-egressgateway    ClusterIP      172.18.2.116     <none>         80/TCP,443/TCP,15443/TCP                                                     5m35sistio-ingressgateway   LoadBalancer   172.18.177.126   154.85.54.75   15021:30059/TCP,80:31088/TCP,443:31806/TCP,31400:30831/TCP,15443:32665/TCP   5m35sistiod                 ClusterIP      172.18.167.120   <none>         15010/TCP,15012/TCP,443/TCP,15014/TCP,853/TCP                                6m1s

查看 Kubernetes pod 是否已經(jīng)正常部署,且處于 Running 狀態(tài):

$ kubectl  get pod -n istio-systemNAME                                    READY   STATUS    RESTARTS   AGEistio-egressgateway-7bf76dd59-vtsj9     1/1     Running   0          5m46sistio-ingressgateway-586dbbc45d-2l6sz   1/1     Running   0          5m46sistiod-6cc5758d8c-mgdcb                 1/1     Running   0          6m13s

3、開(kāi)啟自動(dòng)注入

Istio 安裝完成后,在部署應(yīng)用之前,需要首先開(kāi)啟 sidecar 的自動(dòng)注入,這里可以通過(guò)為命名空間添加標(biāo)簽實(shí)現(xiàn),執(zhí)行以下命令即可:

$ kubectl label namespace default istio-injection=enablednamespace/default labeled

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

在下載的 Istio 安裝文件中,包括多種示例應(yīng)用,這里我們以 Bookinfo 為例,介紹服務(wù)的部署使用過(guò)程。該應(yīng)用由四個(gè)單獨(dú)的微服務(wù)構(gòu)成:

  • productpage:該服務(wù)會(huì)調(diào)用 details 和 reviews 兩個(gè)微服務(wù),用來(lái)生成頁(yè)面。

  • details:該服務(wù)包含了書(shū)籍的信息。

  • reviews:該服務(wù)包含了書(shū)籍相關(guān)的評(píng)論,會(huì)調(diào)用 ratings 微服務(wù)。

  • ratings:該服務(wù)包含了由書(shū)籍評(píng)價(jià)組成的評(píng)級(jí)信息。

這些微服務(wù)使用不同的編程語(yǔ)言實(shí)現(xiàn),實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的在線書(shū)店平臺(tái),用于展示書(shū)籍的描述、評(píng)級(jí)等基本信息。

1、使用 kubectl 部署示例應(yīng)用

進(jìn)入 istio 安裝目錄 istio-1.7.3,執(zhí)行下面的命令完成應(yīng)用部署。

$ kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yamlservice/details createdserviceaccount/bookinfo-details createddeployment.apps/details-v1 createdservice/ratings createdserviceaccount/bookinfo-ratings createddeployment.apps/ratings-v1 createdservice/reviews createdserviceaccount/bookinfo-reviews createddeployment.apps/reviews-v1 createddeployment.apps/reviews-v2 createddeployment.apps/reviews-v3 createdservice/productpage createdserviceaccount/bookinfo-productpage createddeployment.apps/productpage-v1 created

2、查看服務(wù)和實(shí)例是否正常創(chuàng)建

$ kubectl  get svcNAME          TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGEdetails       ClusterIP   172.18.44.247    <none>        9080/TCP   26skubernetes    ClusterIP   172.18.0.1       <none>        443/TCP    35mproductpage   ClusterIP   172.18.106.238   <none>        9080/TCP   26sratings       ClusterIP   172.18.2.59      <none>        9080/TCP   26sreviews       ClusterIP   172.18.10.251    <none>        9080/TCP   26s
$ kubectl  get podNAME                              READY   STATUS    RESTARTS   AGEdetails-v1-5974b67c8-cpw96        2/2     Running   0          3m31sproductpage-v1-64794f5db4-svfk2   2/2     Running   0          3m30sratings-v1-c6cdf8d98-skc4q        2/2     Running   0          3m30sreviews-v1-7f6558b974-cwsh9       2/2     Running   0          3m30sreviews-v2-6cb6ccd848-5fzgc       2/2     Running   0          3m31sreviews-v3-cc56b578-qqmn2         2/2     Running   0          3m31s

可以看到,服務(wù)和實(shí)例都已經(jīng)創(chuàng)建成功。

3、確定 Ingress 的 IP 和端口

在 Bookinfo 服務(wù)正常啟動(dòng)并運(yùn)行之后,需要設(shè)置 Istio 網(wǎng)關(guān),這樣可以在 Kubernetes 集群外部訪問(wèn)應(yīng)用。

$ kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yamlgateway.networking.istio.io/bookinfo-gateway createdvirtualservice.networking.istio.io/bookinfo created

這里我們使用的 Kubernetes 集群支持外部負(fù)載均衡器,可以看到已經(jīng)分配到 EXTERNAL-IP:

$ kubectl get svc istio-ingressgateway -n istio-systemNAME                   TYPE           CLUSTER-IP       EXTERNAL-IP    PORT(S)                                                                      AGEistio-ingressgateway   LoadBalancer   172.18.177.126   154.85.54.75   15021:30059/TCP,80:31088/TCP,443:31806/TCP,31400:30831/TCP,15443:32665/TCP   14m

設(shè)置 ingress IP 和端口:

$ export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}')$ export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].port}')$ export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT

4、應(yīng)用訪問(wèn)

在瀏覽器端打開(kāi)地址 http://${GATEWAY_URL}/productpage,這里我們獲取到的地址是154.85.54.75:80,可以看到界面如下。

怎么進(jìn)行Istio服務(wù)網(wǎng)格部署實(shí)踐

關(guān)于怎么進(jìn)行Istio服務(wù)網(wǎng)格部署實(shí)踐問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

網(wǎng)頁(yè)標(biāo)題:怎么進(jìn)行Istio服務(wù)網(wǎng)格部署實(shí)踐
文章網(wǎng)址:http://bm7419.com/article44/jjcphe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、標(biāo)簽優(yōu)化、搜索引擎優(yōu)化、網(wǎng)站策劃全網(wǎng)營(yíng)銷(xiāo)推廣、虛擬主機(jī)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(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è)公司