久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

kubernetes中Istio如何配置請求路由

168次閱讀
沒有評論

共計 4467 個字符,預計需要花費 12 分鐘才能閱讀完成。

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

一:簡介

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

二:路由配置

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

將所有微服務的默認版本設置為 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 來顯示路由規(guī)則對應的 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”身份登錄。現(xiàn)在應該在每次評論旁邊看到評分(1- 5 顆星)。請注意,如果您以任何其他用戶身份登錄,您將會繼續(xù)看到 reviews:v1 版本服務,即不包含星級評價的頁面。

三:原理

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

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

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

2. 關聯(lián)服務:Pod 必須關聯(lián)到 Kubernetes 服務,如果一個 Pod 屬于多個服務,這些服務不能再同一端口上使用不同協(xié)議,例如 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 如何配置請求路由”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業(yè)資訊頻道!

正文完
 
丸趣
版權聲明:本站原創(chuàng)文章,由 丸趣 2023-08-16發(fā)表,共計4467字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發(fā)布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 丽江市| 文登市| 周口市| 沂南县| 元朗区| 隆尧县| 花莲县| 曲周县| 东乡| 乃东县| 当阳市| 怀仁县| 临潭县| 威海市| 孟村| 桐庐县| 商洛市| 三门县| 钦州市| 栾城县| 万载县| 林周县| 巴林右旗| 新化县| 洛浦县| 平顺县| 溧阳市| 阳朔县| 荣昌县| 阿瓦提县| 涞源县| 金门县| 宝应县| 洞头县| 海淀区| 桃园县| 会泽县| 通许县| 稷山县| 内丘县| 桂林市|