中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么進行Istio服務網格部署實踐

發布時間:2022-01-12 16:19:02 來源:億速云 閱讀:166 作者:柒染 欄目:云計算

怎么進行Istio服務網格部署實踐,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

作為處理服務通訊的基礎設施層,ServiceMesh 技術通過引入輕量級網絡代理,實現了服務訪問、流量治理、可觀察性等關鍵功能,受到了社區的高度關注。Istio 是開源的 ServiceMesh 產品,提供了一個完整的滿足微服務應用多種需求的解決方案。

項目基于最新發布的 Istio1.7.3 版本,從安裝和部署出發,介紹 Istio 的安裝部署過程,并結合 Bookinfo 示例應用,方便讀者認識 Istio 的各個組件及其功能。

準備工作

Kubernetes 集群

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

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

Istio 安裝文件

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

1、這里我們使用 MAC 系統,可以通過以下命令下載最新版本的 Istio:

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

也可以直接訪問 Istio release(https://github.com/istio/istio/releases/tag/1.7.3) 頁面下載與當前操作系統對應的安裝文件。

注意:當前的最新版本為 1.7.3,如果需要下載安裝歷史版本,在命令行中指定環境變量 ISTIO_VERSION 即可,如果下載特定系統架構的安裝包,則需要設置環境變量 TARGET_ARCH。

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

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

  • samples/ 目錄:包含一組示例應用,覆蓋多種應用場景

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

  • tools/ 目錄:istio 安裝和使用過程相關的腳本

將 istioctl 客戶端路徑增加到 path 環境變量中,在 MAC 系統下執行以下命令:

$ export PATH=$PWD/bin:$PATH

Istio部署實踐


Istio 主要提供了以下三種安裝方式,用戶可以根據自己的實際需要進行選擇。

1、使用 Istioctl 安裝:istioctl 是支持多種自定義選項的的命令行工具,用戶可以靈活配置,實現 Istio 組件的定制化安裝。Istio 官方推薦使用該方式進行安裝部署,可用于生產環境。

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

3、安裝獨立的 Operator:該方式使用獨立的 Istio operator 來安裝 istio,以聲明式的方式管理安裝配置,目前仍處于實驗階段,不推薦在生產環境使用。

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

部署 Istio

1、使用 demo 配置文件進行安裝

Istio 官方提供了針對不同場景的配置文件,這些內置的配置文件提供了對 Istio 控制平面和數據平面的定制內容。用戶可以根據實際場景選擇特定的配置文件,然后結合自定義選項完成定制化安裝。當前提供以下幾種內置配置文件包括:

  • default: 根據默認的安裝選項啟用組件,建議用于生產環境的部署。

  • demo: 用于展示 Istio 的基本功能,支持運行 Bookinfo 應用程序和相關任務。

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

  • remote:用于配置多集群服務網格場景下的遠程集群。

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

  • preview:包含實驗性功能,用于探索 Istio 新功能,但無法保證穩定性。

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

這里為了測試方便,我們直接使用內置的 demo 配置文件進行安裝,執行以下命令即可:

$ 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、查看組件狀態

然后查看 Kubernetes 服務是否已經成功創建:

$ 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 是否已經正常部署,且處于 Running 狀態:

$ 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、開啟自動注入

Istio 安裝完成后,在部署應用之前,需要首先開啟 sidecar 的自動注入,這里可以通過為命名空間添加標簽實現,執行以下命令即可:

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

部署 Bookinfo 示例應用

在下載的 Istio 安裝文件中,包括多種示例應用,這里我們以 Bookinfo 為例,介紹服務的部署使用過程。該應用由四個單獨的微服務構成:

  • productpage:該服務會調用 details 和 reviews 兩個微服務,用來生成頁面。

  • details:該服務包含了書籍的信息。

  • reviews:該服務包含了書籍相關的評論,會調用 ratings 微服務。

  • ratings:該服務包含了由書籍評價組成的評級信息。

這些微服務使用不同的編程語言實現,實現了一個簡單的在線書店平臺,用于展示書籍的描述、評級等基本信息。

1、使用 kubectl 部署示例應用

進入 istio 安裝目錄 istio-1.7.3,執行下面的命令完成應用部署。

$ 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、查看服務和實例是否正常創建

$ 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

可以看到,服務和實例都已經創建成功。

3、確定 Ingress 的 IP 和端口

在 Bookinfo 服務正常啟動并運行之后,需要設置 Istio 網關,這樣可以在 Kubernetes 集群外部訪問應用。

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

這里我們使用的 Kubernetes 集群支持外部負載均衡器,可以看到已經分配到 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

設置 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、應用訪問

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

怎么進行Istio服務網格部署實踐

關于怎么進行Istio服務網格部署實踐問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

库车县| 凌源市| 柞水县| 大洼县| 神池县| 全椒县| 宣武区| 岢岚县| 内黄县| 和顺县| 曲阜市| 龙山县| 南涧| 西和县| 望江县| 宜黄县| 清镇市| 怀来县| 建湖县| 晴隆县| 滦平县| 嘉义县| 汾阳市| 育儿| 无极县| 鄂州市| 马鞍山市| 资阳市| 年辖:市辖区| 如东县| 托克托县| 佛坪县| 获嘉县| 溧阳市| 兰坪| 桃江县| 临江市| 石家庄市| 元江| 乐昌市| 新野县|