简介
当前istio下发xDS使用的是全量下发策略,也就是网格里的所有sidecar(envoy),内存里都会有整个网格内所有的服务发现数据。这样的结果是,每个sidecar内存都会随着网格规模增长而增长。
Aeraki-mesh
aeraki-mesh项目下有一个子项目专门用来处理istio配置分发性能问题,我们找到该项目:
https://github.com/aeraki-mesh/lazyxds
从该项目的部署yaml中,我们知道它会在网格中增加两个组件:
egress:充当类似网格模型中默认网关角色
controller:用来分析并补全服务间的依赖关系
Egress
对应的配置文件为:lazyxds-egress.yaml
下面来一一查看该组件的组成部分
组件配置
apiVersion: apps/v1
kind: Deployment
metadata:
name: istio-egressgateway-lazyxds
namespace: istio-system
labels:
app: istio-egressgateway-lazyxds
istio: egressgateway
spec:
replicas: 1
selector:
matchLabels:
app: istio-egressgateway-lazyxds
istio: egressgateway
template:
metadata:
annotations:
sidecar.istio.io/discoveryAddress: istiod.istio-system.svc:15012
sidecar.istio.io/inject: "false"
labels:
app: istio-egressgateway-lazyxds
istio: egressgateway
spec:
containers:
- args:
......
image: docker.io/istio/proxyv2:1.10.0
imagePullPolicy: IfNotPresent
name: istio-proxy
ports:
- containerPort: 8080
protocol: TCP
- containerPort: 15090
name: http-envoy-prom
protocol: TCP
......
volumeMounts:
- mountPath: /etc/istio/custom-bootstrap
name: custom-bootstrap-volume
...