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

溫馨提示×

溫馨提示×

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

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

kubernetes中Istio如何配置請求路由

發布時間:2021-12-24 16:23:07 來源:億速云 閱讀:212 作者:小新 欄目:云計算

這篇文章主要為大家展示了“kubernetes中Istio如何配置請求路由”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“kubernetes中Istio如何配置請求路由”這篇文章吧。

一:簡介

由于 Bookinfo 示例部署了三個版本的 reviews 微服務,因此我們需要設置默認路由。 否則,如果您當多次訪問應用程序,您會注意到有時輸出包含星級評分,有時又沒有。 這是因為沒有為應用明確指定缺省路由時,Istio 會將請求隨機路由到該服務的所有可用版本上。

二:路由配置

  1. 說明:此任務假定您尚未設置任何路由。 如果您已經為示例應用程序創建了存在沖突的路由規則,則需要在下面的命令中使用 replace代替 create

  2. 將所有微服務的默認版本設置為 v1

    istioctl create -f samples/bookinfo/networking/destination-rule-all.yaml

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: productpage
spec:
  host: productpage
  subsets:
  - name: v1
    labels:
      version: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: reviews
spec:
  host: reviews
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2
  - name: v3
    labels:
      version: v3
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: ratings
spec:
  host: ratings
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2
  - name: v2-mysql
    labels:
      version: v2-mysql
  - name: v2-mysql-vm
    labels:
      version: v2-mysql-vm
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: details
spec:
  host: details
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2
---

istioctl create -f samples/bookinfo/networking/virtual-service-all-v1.yaml

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: productpage
spec:
  hosts:
  - productpage
  http:
  - route:
    - destination:
        host: productpage
        subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
  - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: ratings
spec:
  hosts:
  - ratings
  http:
  - route:
    - destination:
        host: ratings
        subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: details
spec:
  hosts:
  - details
  http:
  - route:
    - destination:
        host: details
        subset: v1
---

3.使用 istioctl get destinationrules -o yaml來顯示路由規則對應的 subset 定義

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  creationTimestamp: null
  name: details
  namespace: default
  resourceVersion: "14675502"
spec:
  host: details
  subsets:
  - labels:
      version: v1
    name: v1
  - labels:
      version: v2
    name: v2
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  creationTimestamp: null
  name: productpage
  namespace: default
  resourceVersion: "14675499"
spec:
  host: productpage
  subsets:
  - labels:
      version: v1
    name: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  creationTimestamp: null
  name: ratings
  namespace: default
  resourceVersion: "14675501"
spec:
  host: ratings
  subsets:
  - labels:
      version: v1
    name: v1
  - labels:
      version: v2
    name: v2
  - labels:
      version: v2-mysql
    name: v2-mysql
  - labels:
      version: v2-mysql-vm
    name: v2-mysql-vm
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  creationTimestamp: null
  name: reviews
  namespace: default
  resourceVersion: "14675500"
spec:
  host: reviews
  subsets:
  - labels:
      version: v1
    name: v1
  - labels:
      version: v2
    name: v2
  - labels:
      version: v3
    name: v3
---

4.通過將來自 productpage 的流量路由到 reviews:v2 實例,為測試用戶 “jason” 啟用 ratings 服務。

istioctl replace -f samples/bookinfo/networking/virtual-service-reviews-test-v2.yaml

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
    - reviews
  http:
  - match:
    - headers:
        end-user:
          exact: jason
    route:
    - destination:
        host: reviews
        subset: v2
  - route:
    - destination:
        host: reviews
        subset: v1

在 productpage 網頁上以用戶 “jason” 身份登錄。現在應該在每次評論旁邊看到評分(1-5顆星)。 請注意,如果您以任何其他用戶身份登錄,您將會繼續看到 reviews:v1 版本服務,即不包含星級評價的頁面。

三:原理

首先使用 Istio 將 100% 的請求流量都路由到了 Bookinfo 服務的 v1 版本。 然后再設置了一條路由規則,該路由規則在 productpage 服務中添加基于請求的 “end-user” 自定義 header 選擇性地將特定的流量路由到了 reviews 服務的 v2 版本。

為了利用 Istio 的 L7 路由功能,Kubernetes 中的服務(如本任務中使用的 Bookinfo 服務)必須遵守某些特定限制。

1.需要給端口正確命名:服務端口必須進行命名。端口名稱只允許是<協議>[-<后綴>-]模式,其中<協議>部分可選擇范圍包括 http、http2、grpc、mongo 以及 redis,Istio 可以通過對這些協議的支持來提供路由能力。例如 name: http2-foo 和 name: http 都是有效的端口名,但 name: http2foo 就是無效的。如果沒有給端口進行命名,或者命名沒有使用指定前綴,那么這一端口的流量就會被視為普通 TCP 流量(除非顯式的用 Protocol: UDP 聲明該端口是 UDP 端口)。

2.關聯服務:Pod 必須關聯到 Kubernetes 服務,如果一個 Pod 屬于多個服務,這些服務不能再同一端口上使用不同協議,例如 HTTP 和 TCP。

3.Deployment 應帶有 app 以及 version 標簽:在使用 Kubernetes Deployment 進行 Pod 部署的時候,建議顯式的為 Deployment 加上 app 以及 version 標簽。每個 Deployment 都應該有一個有意義的 app 標簽和一個用于標識 Deployment 版本的 version 標簽。app 標簽在分布式跟蹤的過程中會被用來加入上下文信息。Istio 還會用 app 和 version 標簽來給遙測指標數據加入上下文信息。

四:清除路由

istioctl delete -f samples/bookinfo/networking/virtual-service-all-v1.yaml

以上是“kubernetes中Istio如何配置請求路由”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

万荣县| 句容市| 大悟县| 沾益县| 花莲市| 宁陕县| 南岸区| 兰考县| 余姚市| 博客| 景德镇市| 葫芦岛市| 酒泉市| 马鞍山市| 阿坝| 阿城市| 巫溪县| 怀柔区| 兰溪市| 旺苍县| 绥阳县| 峨边| 宽城| 师宗县| 姚安县| 双柏县| 铜川市| 昌宁县| 绵阳市| 益阳市| 池州市| 东阳市| 海淀区| 武定县| 绍兴市| 大城县| 宜宾县| 扬州市| 奇台县| 武夷山市| 巴彦县|