Kubernetes Istio对多个名称空间的负载平衡
我有两个名称空间承载不同版本的服务,名称空间sh blue承载每个服务的一个版本,sh green承载每个服务的新版本。每次新部署时,所有服务都会更新为新版本。我想实现从当前版本到新版本的canary部署 下面的代码是我目前拥有的,它工作得很好,只是不清楚它使用的是哪种负载平衡。当我检查入口网关日志时,它是这样的:蓝色,绿色,绿色,蓝色,绿色,绿色,红色,绿色,蓝色,蓝色,绿色,绿色 是否可以控制负载平衡?有没有更好的方法来设置这个Kubernetes Istio对多个名称空间的负载平衡,kubernetes,istio,Kubernetes,Istio,我有两个名称空间承载不同版本的服务,名称空间sh blue承载每个服务的一个版本,sh green承载每个服务的新版本。每次新部署时,所有服务都会更新为新版本。我想实现从当前版本到新版本的canary部署 下面的代码是我目前拥有的,它工作得很好,只是不清楚它使用的是哪种负载平衡。当我检查入口网关日志时,它是这样的:蓝色,绿色,绿色,蓝色,绿色,绿色,红色,绿色,蓝色,蓝色,绿色,绿色 是否可以控制负载平衡?有没有更好的方法来设置这个 apiVersion: networking.istio.io
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"
您可以在Istio
DestinationRule
流量管理中指定负载平衡配置。它要求mesh服务包含流量策略
,以便控制负载平衡
有关更多信息,我建议访问Istio负载平衡器设置。在我的示例中,虚拟服务是两个不同服务之间的50/50路由,
DestinationRule
在选择其中一个服务后应用。如果我设置了ROUND_ROBIN
,则只有在其中一个服务中存在负载平衡吊舱时才会发生这种情况。我希望能够设置如何在两个服务之间平衡请求,目前它看起来是随机的。我会为前缀:/index
和前缀:/config
路径分别创建两个独立的虚拟服务
,分别绑定到相同的网关
,然后查看流量分布,只是为了检查行为。我和您有同样的问题。在这种情况下,您找到更好的方法来控制负载平衡了吗?
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
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