使用DR对流量进行管理 subnet子集的定义


这里vs可以控制往svc1和svc2流量走的比例,但是这里只假设往svc3里面走。现在想控制的是往pod1和pod2各走多少流量。

使用DR对流量进行管理 subnet子集的定义_第1张图片

流量到了svc3的时候还是使用的是kube-proxy对流量进行转发。

了解DR


DR定义的是经过VS之后已经到达service的流量,主要可以用于:

1.定义子集(流量到达了svc3之后,它到底如何区分pod1和pod2呢?对于svc来说如何区分后面的pod就是使用subnet来标记后端的两个pod)

2.定义流量管理

    1.LB策略

          LB算法

          哈希一致性算法

    2.连接池(去做熔断的时候需要去定义连接池)

    3.异常处理

上面这些都是在dr里面去定义的。

 

DR的基本用法,定义子集


使用DR对流量进行管理 subnet子集的定义_第2张图片

定义dr的时候,要指定此dr用于在哪个service上的。这里host就需要修改为svc3。也就是经过svc3的流量将会受到dr的控制。
这里定义了两个子集v1 v2,子集的名称是可以自己随意定义的,v1所对应的pod具有标签v1,v2对应的pod具有标签v2。如果按照上面图片上面所定义的就是 v1 run: pod1 v2 run: pod2。
在写vs的时候要指定subset,往svc3去转发的,然后往哪个子集去走呢?这里就需要指定v1 v2。
上面就是往同一个svc走,那么就可以有效的管控后面的pod1 pod2走的流量。
如果上面要使用k8s去控制流量,这样就是比较困难的。利用权限来控制流量就很容易实现常用的功能了。比如蓝绿部署,金丝雀发布。

 

蓝绿部署


使用DR对流量进行管理 subnet子集的定义_第3张图片

这两套环境可以在同一个svc下面部署,也就是同一个svc下面的不同pod,上面的weigth注意一下一个是0一个是100,即两个环境。这样就很方便从一个环境切换到另外一个环境。

上面就是蓝绿部署,同一个svc挂在了两组pod。不同组的pod具有不同的标签,同时他们还有共同的标签。

使用DR对流量进行管理 subnet子集的定义_第4张图片

或者两套deploy 两套svc。如果是这种话就没有必要使用dr了,直接使用vs就行了。

 

金丝雀发布


使用DR对流量进行管理 subnet子集的定义_第5张图片

 

 

流量管理


使用DR对流量进行管理 subnet子集的定义_第6张图片要求客户端去访问的时候,是否需要使用tls也就是https的方式去连接。

你可能感兴趣的:(Service,Mesh,Istio,istio)