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

这里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去控制流量,这样就是比较困难的。利用权限来控制流量就很容易实现常用的功能了。比如蓝绿部署,金丝雀发布。
[root@k8s-master dr]# cat pod1.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: pod1
  namespace: istio
  labels:
    run: pod
    version: v1
spec:
  containers:
    - name: pod
      image: nginx


[root@k8s-master dr]# cat pod3.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: pod3
  namespace: istio
  labels:
    run: pod
    version: v3
spec:
  containers:
    - name: pod
      image: nginx

[root@k8s-master vs]# cat svc.yaml 
apiVersion: v1
kind: Service
metadata:
  name: service-dr
  namespace: istio
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: pod
  type: ClusterIP



[root@k8s-master dr]# cat drsubset.yaml 
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: mydr
  namespace: istio
spec:
  host: service-dr 
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v3
    labels:
      version: v3


[root@k8s-master vs]# cat vs.yaml 
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: myvs
  namespace: istio
spec:
  hosts:
  - "cc.rhce.cc"
  gateways:
  - mygateway
  http:
  - route:
    - destination:
        host: service-dr 
        subset: v1
      weight: 50
    - destination:
        host: service-dr
        subset: v3
      weight: 50

 

 

蓝绿部署


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

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

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

金丝雀发布


流量管理


要求客户端去访问的时候,是否需要使用tls也就是https的方式去连接。

在使用tls的时候必须指定自己的证书,公钥这些信息。默认不加上这块配置就是disable。

通过这个配置就限定了当pod去访问是必须要使用tls加密。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值