这里vs可以控制往svc1和svc2流量走的比例,但是这里只假设往svc3里面走。现在想控制的是往pod1和pod2各走多少流量。
流量到了svc3的时候还是使用的是kube-proxy对流量进行转发。
了解DR
DR定义的是经过VS之后已经到达service的流量,主要可以用于:
1.定义子集(流量到达了svc3之后,它到底如何区分pod1和pod2呢?对于svc来说如何区分后面的pod就是使用subnet来标记后端的两个pod)
2.定义流量管理
1.LB策略
LB算法
哈希一致性算法
2.连接池(去做熔断的时候需要去定义连接池)
3.异常处理
上面这些都是在dr里面去定义的。
DR的基本用法,定义子集
定义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去控制流量,这样就是比较困难的。利用权限来控制流量就很容易实现常用的功能了。比如蓝绿部署,金丝雀发布。
蓝绿部署
这两套环境可以在同一个svc下面部署,也就是同一个svc下面的不同pod,上面的weigth注意一下一个是0一个是100,即两个环境。这样就很方便从一个环境切换到另外一个环境。
上面就是蓝绿部署,同一个svc挂在了两组pod。不同组的pod具有不同的标签,同时他们还有共同的标签。
或者两套deploy 两套svc。如果是这种话就没有必要使用dr了,直接使用vs就行了。
金丝雀发布
流量管理
要求客户端去访问的时候,是否需要使用tls也就是https的方式去连接。