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