Istio负载均衡到多个名称空间

时间:2018-12-27 09:26:49

标签: kubernetes istio

我有两个命名空间承载不同版本的服务,命名空间 sh-blue 承载每个服务的一个版本,而 sh-green 承载每个服务的新版本。每次进行新部署时,所有服务都会更新到新版本。我想实现从当前版本到新版本的金丝雀部署。

下面的代码是我目前拥有的,并且工作正常,但不清楚使用哪种负载均衡。当我检查入口网关日志时,它类似于:蓝色,绿色,绿色,蓝色,绿色,绿色,绿色,红色,绿色,蓝色,蓝色,蓝色,绿色,绿色,... < / p>

是否可以控制负载平衡?还有设置它的更好方法吗?

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: sh-gateway
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*.something.local"
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: sh
spec:
  hosts:
  - "*"
  gateways:
  - sh-gateway
  http:
  - match:
    - uri:
        prefix: /index
    route:
    - destination:
        host: index.sh-blue.svc.cluster.local
        port:
          number: 8080
      weight: 50
    - destination:
        host: index.sh-green.svc.cluster.local
        port:
          number: 8080
      weight: 50
  - match:
    - uri:
        prefix: /config
    route:
    - destination:
        host: config.sh-blue.svc.cluster.local
        port:
          number: 8080
      weight: 50
    - destination:
        host: config.sh-green.svc.cluster.local
        port:
          number: 8080
      weight: 50

1 个答案:

答案 0 :(得分:0)

您可以在Istio DestinationRule流量管理resource中指定负载平衡配置。网状服务需要包含trafficPolicy才能控制负载平衡policy

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: bookinfo-ratings-port
spec:
  host: ratings.prod.svc.cluster.local
  trafficPolicy: # Apply to all ports
    portLevelSettings:
    - port:
        number: 80
      loadBalancer:
        simple: LEAST_CONN
    - port:
        number: 9080
      loadBalancer:
        simple: ROUND_ROBIN

有关更多信息,我建议您访问Istio Load Balancer设置overview