Istio DestinationRule выдает ошибку соединения в восходящем направлении или отключает / сбрасывает перед заголовками - PullRequest
0 голосов
/ 01 ноября 2018

Я пытаюсь получить некоторую базовую маршрутизацию между двумя приложениями, развернутыми в кластере Google Cloud Kubernetes с отношением lb, и у меня есть эта конфигурация:

apiVersion: v1
kind: Service
metadata:
  name: kubeapp
  labels:
    app: kubeapp
spec:
  ports:
  - port: 8080
    name: http
  selector:
    app: kubeapp
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: kubeapp-v1
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: kubeapp
        version: kubeapp-v1
    spec:
      containers:
      - name: kubeapp-v1
        image: .......
        ports:
        - name: kubeapp-v1
          containerPort: 8080
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: kubeapp-v2
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: kubeapp
        version: kubeapp-v2
    spec:
      containers:
      - name: kubeapp-v2
        image: .......
        ports:
        - name: kubeapp-v2
          containerPort: 8080
---
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: kubeapp-gateway
spec:
  selector:
    istio: ingressgateway # use istio default controller
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: kubeapp
spec:
  hosts:
  - "*"
  gateways:
  - kubeapp-gateway
  http:
  - route:
    - destination:
        host: kubeapp
        port: 8080

, который отлично работает, и трафик идет 50/50, но когда я пытаюсь добавить некоторые базовые правила для lb, как:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: kubeapp
spec:
  hosts:
  - "*"
  gateways:
  - kubeapp-gateway
  http:
  - route:
    - destination:
        host: kubeapp
        port:
          number: 8080
        subset: kubeapp-v1
      weight: 90
    - destination:
        host: kubeapp
        port:
          number: 8080
        subset: kubeapp-v2
      weight: 10
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: kubeapp
spec:
  host: kubeapp
  subsets:
  - name: kubeapp-v1
    labels:
      version: kubeapp-v1
  - name: kubeapp-v2
    labels:
      version: kubeapp-v2

Я получил upstream connect error or disconnect/reset before headers

Я пытался установить Istio во всех 3 режимах и развернуть его на узлах кластера разного размера (я видел, что иногда в Istio есть ошибки на каком-то конкретном размере кластера), но безуспешно.

1 Ответ

0 голосов
/ 02 ноября 2018

Очень распространенная причина такого рода проблем заключается в том, что ваш DestinationRule вызывает конфликт mTLS. Проблема задокументирована здесь .

...