添加多个外部服务时,出口网关无法正常工作

时间:2020-07-16 00:05:00

标签: kubernetes istio

我试图定义多个外部服务(redis:AWS ElastiCache)以通过出口网关进行路由。参照https://github.com/istio/istio/issues/16806#issuecomment-538718737配置了两个网关。我应用了以下配置,但是它无法正常运行,并且可以找到错误日志。似乎连接到这两个目的地仅是其中一个(随机?)

这是错误还是有解决方案?

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: istio-egressgateway-redis-1
  namespace: test
spec:
  selector:
    istio: egressgateway
  servers:
  - port:
      name: redis
      number: 6379
      protocol: TCP
    hosts:
    - "aaa.aaa.ng.0001.apne1.cache.amazonaws.com"
---
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: egress-redis-1
  namespace: test
spec:
  hosts:
  - aaa.aaa.ng.0001.apne1.cache.amazonaws.com
  ports:
  - name: egress-redis-1
    number: 6379
    protocol: TCP
  location: MESH_EXTERNAL
  resolution: DNS
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: egress-redis-1
  namespace: test
spec:
  hosts:
  - aaa.aaa.ng.0001.apne1.cache.amazonaws.com
  gateways:
  - istio-egressgateway-redis-1
  - mesh
  tcp:
  - match:
    - gateways:
      - mesh
      port: 6379
    route:
    - destination:
        host: istio-egressgateway.istio-system.svc.cluster.local
        subset: egress-redis-1
        port:
          number: 6379
  - match:
    - gateways:
      - istio-egressgateway-redis-1
      port: 6379
    route:
    - destination:
        host: aaa.aaa.ng.0001.apne1.cache.amazonaws.com
        port:
          number: 6379
      weight: 100
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: egress-redis-1
  namespace: test
spec:
  host: istio-egressgateway.istio-system.svc.cluster.local
  subsets:
  - name: egress-redis-1
---
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: istio-egressgateway-redis-2
  namespace: test
spec:
  selector:
    istio: egressgateway
  servers:
  - port:
      name: redis
      number: 6379
      protocol: TCP
    hosts:
    - "bbb.bbb.clustercfg.apne1.cache.amazonaws.com"
---
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: egress-redis-2
  namespace: test
spec:
  hosts:
  - bbb.bbb.clustercfg.apne1.cache.amazonaws.com
  ports:
  - name: egress-redis-2
    number: 6379
    protocol: TCP
  location: MESH_EXTERNAL
  resolution: DNS
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: egress-redis-2
  namespace: test
spec:
  hosts:
  - bbb.bbb.clustercfg.apne1.cache.amazonaws.com
  gateways:
  - istio-egressgateway-redis-2
  - mesh
  tcp:
  - match:
    - gateways:
      - mesh
      port: 6379
    route:
    - destination:
        host: istio-egressgateway.istio-system.svc.cluster.local
        subset: egress-redis-2
        port:
          number: 6379
  - match:
    - gateways:
      - istio-egressgateway-redis-2
      port: 6379
    route:
    - destination:
        host: bbb.bbb.clustercfg.apne1.cache.amazonaws.com
        port:
          number: 6379
      weight: 100
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: egress-redis-2
  namespace: test
spec:
  host: istio-egressgateway.istio-system.svc.cluster.local
  subsets:
  - name: egress-redis-2

Istio错误日志:

2020-07-14T08:24:42.803875Z#011info#011ads#011Push Status: {
    "pilot_conflict_outbound_listener_tcp_over_current_tcp": {
        "0.0.0.0:6379": {
            "proxy": "member-11111-22222.test",
            "message": "Listener=0.0.0.0:6379 AcceptedTCP=aaa.aaa.clustercfg.apne1.cache.amazonaws.com RejectedTCP=bbb.bbb.ng.0001.apne1.cache.amazonaws.com TCPServices=1"
        }
    }
}

版本

Kubernetes: 1.18.5
Istio: 1.6.4

outboundTrafficPolicy

REGISTRY_ONLY

将网关的端口名更新为唯一的端口后,仍然无法使用。

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: istio-egressgateway-redis-1
  namespace: qa2
spec:
  selector:
    istio: egressgateway
  servers:
  - port:
      name: egress-redis-1
      number: 6379
      protocol: TCP
    hosts:
    - "aaa.aaa.ng.0001.apne1.cache.amazonaws.com"
---
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: istio-egressgateway-redis-2
  namespace: qa2
spec:
  selector:
    istio: egressgateway
  servers:
  - port:
      name: egress-redis-2
      number: 6379
      protocol: TCP
    hosts:
    - "bbb.bbb.clustercfg.apne1.cache.amazonaws.com"

0 个答案:

没有答案