最近在研究Istio,流量治理這塊是一個大頭,有好多內容。后期我應該會單獨搞一個小課程出來。這塊兒內容有兩個非常核心的概念--VirtualService和DestinationRule。
1)VirtualService:
定義對特定目標服務的一組流量規則,它將滿足條件的流量轉發到對應的服務后端,這個服務后端可以是一個或多個服務,也可以是DestinationRule定義的服務子集(subset)。
示例:
apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: forecast-route spec: hosts: ##定義流量發送的目標地址,可以是service名字也可以是具體的IP地址,通常是service的名字。 - forecast http: ##這個字段可以是http、tcp或者tls(https) - match: ##定義匹配規則 - headers: ##匹配header中location取值為north的請求 location: exact: north route: ##定義具體的路由規則,這里指的是當請求符合匹配規則時,走該規則 - destination: ##定義流量被轉發到哪里去 host: forecast ##這個host跟上面的host類似,通常也是用service名字定義 subset: v2 ##具體規則需要在DestinationRule中定義,這里只是指定一個名字v2 - route: - destination: host: forecast subset: v1
說明:這個小例子定義了兩條規則,1)如果過來的請求header中,location匹配了north關鍵詞,則會訪問forecast這個service的v2版本;2)否則會訪問到forecast服務的v1版本。其中v1和v2的具體流量走向還得看DestinationRule如何定義。
2)DestinationRule:
它用來定義流量路由之后的去處,和VirtualService配合使用,在VirtualService中定義了subsets的名字,那么在DestinationRule中定義subsets具體的內容,而且在DestinationRule里還提供了具體的流量策略。
示例:
apiVersion: networking.istio.io/v1alpha3 kind: DestinationRule metadata: name:forecast-dr##定義DestinationRule的名字 spec: host: forecast ##定義流量發送的目標地址,和VirtualService中的該字段含義一樣 subsets: ##定義subsets規則 - name: v2 ##名字是v2,和VirtualService里定義的要保持一致 labels: version: v2 trafficPolicy: ##定義流量策略,可選字段trafficPolicy、connectionPool(連接池設置,可以實現限速或限流的效果)、outlierDetection(異常點檢查,可以做熔斷效果)、tls loadBalancer: ##定義負載均衡算法,可選字段simple、consistentHash(一致性hash)、localityLbSetting(位置負載均衡) simple: ROUND_ROBIN ##simple指的是標準負載均衡算法,可以是ROUND_ROBIN、LEAST_CONN(最少連接)、RANDOM(隨機)、PASSTHROUGH(直接轉發到客戶端連接的目標地址,即沒有做負載均衡) - name: v1 labels: version: v1
說明:主要定義v1和v2的流量策略,其中v2會走ROUND_ROBIN的負載均衡算法,而v1沒有特殊的流量策略。
可以毫不夸張地講,Istio的流量治理離不開VirtualService和DestinationRule的配置,上面的兩個示例僅僅是一丟丟皮毛,還有好多參數可以配置。比如,限流、熔斷、灰度發布等等。
審核編輯:劉清
-
負載均衡算法
+關注
關注
0文章
4瀏覽量
7003
原文標題:Istio里的VirtualService和DestinationRule
文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
請問有tvp5158里的VBUS的詳細介紹嗎
介紹i.MXRT啟動頭FDCB里的lookupTable
string.c里相關函數介紹
如何在Arm上利用Istio搭建一個基于Kubernetes的Service Mesh平臺
搭建基于Arm的kubernetes+Istio開發環境
阿里云Kubernetes Service Mesh實踐進行時(1): Istio初體驗
華為云國內首發Istio服務網格
Nacos 1.1.4 發布,業界率先支持 Istio MCP 協議
既然有了Kubernetes,為什么還需要Istio?

成為Istio專家,開啟云原生應用之旅!

深度解析Istio Proxy邊車容器的功能與能力

評論