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