old_issues_repo icon indicating copy to clipboard operation
old_issues_repo copied to clipboard

Istio Bookinfo: upstream connect error or disconnect/reset before headers

Open redlifejacket opened this issue 7 years ago • 21 comments

Is this a BUG or FEATURE REQUEST?: BUG

Did you review https://istio.io/help/ and existing issues to identify if this is already solved or being worked on?: YES

Bug: Y

What Version of Istio and Kubernetes are you using, where did you get Istio from, Installation details

istioctl version: Not installed
kubectl version
Client Version: version.Info{Major:"1", Minor:"7", GitVersion:"v1.7.6", GitCommit:"4bc5e7f9a6c25dc4c03d4d656f2cefd21540e28c", GitTreeState:"clean", BuildDate:"2017-09-14T06:55:55Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"9+", GitVersion:"v1.9.2-gke.1", GitCommit:"4ce7af72d8d343ea2f7680348852db641ff573af", GitTreeState:"clean", BuildDate:"2018-01-31T22:30:55Z", GoVersion:"go1.9.2b4", Compiler:"gc", Platform:"linux/amd64"}

Is Istio Auth enabled or not ? NO Did you install istio.yaml, istio-auth.yaml.... NO What happened: As per the Quick Start with Google Kubernetes Engine, I have installed the BookInfo application using the Istio GKE Deployment Manager.

The istio-cluster is up and the workloads are running. gcloud container clusters list NAME ZONE MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS istio-cluster asia-southeast1-a 1.9.2-gke.1 35.186.152.80 n1-standard-2 1.9.2-gke.1 4 RUNNING

kubectl get deployments,ing NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE deploy/details-v1 1 1 1 1 1h deploy/productpage-v1 1 1 1 1 1h deploy/ratings-v1 1 1 1 1 1h deploy/reviews-v1 1 1 1 1 1h deploy/reviews-v2 1 1 1 1 1h deploy/reviews-v3 1 1 1 1 1h

NAME HOSTS ADDRESS PORTS AGE ing/gateway * 35.197.150.179 80 1h

kubectl get ingress -o wide NAME HOSTS ADDRESS PORTS AGE gateway * 35.197.150.179 80 1h

When I access http://35.197.150.179/productpage I get: upstream connect error or disconnect/reset before headers I can access the Istio dashboard at http://localhost:3000/dashboard/db/istio-dashboard

I can access the Prometheus Graph at: http://localhost:9090/graph

I can access the ServiceGraph at: http://localhost:8088/dotviz

I can access the Tracing at: http://localhost:9411/zipkin/?serviceName=all&spanName=all&lookback=3600000&startTs=1518598745092&endTs=1518602345092&annotationQuery=&minDuration=&limit=10&sortOrder=duration-desc

Could you please shed light. What you expected to happen:

How to reproduce it: When I access http://35.197.150.179/productpage I get: upstream connect error or disconnect/reset before headers

Feature Request: Y/N

Describe the feature:

redlifejacket avatar Feb 14 '18 18:02 redlifejacket

/cc @salrashid123 @selmanj @ldemailly

redlifejacket avatar Feb 14 '18 19:02 redlifejacket

I'm an owner now of the target GCP project and saw the sidecars didn't get installed though the other components did

$ kubectl get namespace -L istio-injection
NAME           STATUS    AGE       ISTIO-INJECTION
default        Active    10h       enabled
istio-system   Active    10h       
kube-public    Active    10h       
kube-system    Active    10h       


$ kubectl get no,ing,po,ing,deployments -n istio-system
NAME                                         READY     STATUS    RESTARTS   AGE
po/grafana-648859cf87-nlsbq                  1/1       Running   0          10h
po/istio-ca-797dfb66c5-xh9kz                 1/1       Running   0          10h
po/istio-ingress-84f75844c4-nfftm            1/1       Running   0          10h
po/istio-mixer-9bf85fc68-r7m5w               3/3       Running   0          10h
po/istio-pilot-575679c565-wwnlb              2/2       Running   0          10h
po/istio-sidecar-injector-7b559f7f6f-kmpxp   1/1       Running   0          10h
po/prometheus-cf8456855-lwp4p                1/1       Running   0          10h
po/servicegraph-7ff6c499cc-2r94n             1/1       Running   0          10h
po/zipkin-7988c559b7-dqjqn                   1/1       Running   0          10h
kubectl get po
NAME                                 READY     STATUS    RESTARTS   AGE
po/details-v1-64b86cd49-w4jfc        1/1       Running   0          10h
po/productpage-v1-84f77f8747-fm8km   1/1       Running   0          10h
po/ratings-v1-5f46655b57-9nx5t       1/1       Running   0          10h

I deleted bookinfo an dthen redeployed the app and saw the sidecars pick up.

suspect this maybe a timing issue on our GCP DM script (i.,e we run through istio init, webhook setup for 0.5.1 then wait ~10s before deploying bookinfo.

I can look into some watch command or something that may indicate the sidecar injection is ready? Any thoughts on what to look for?

salrashid123 avatar Feb 14 '18 20:02 salrashid123

@selmanj can you have a look?

ldemailly avatar Feb 15 '18 05:02 ldemailly

This issue still exists in istio0.5.1(0.7.1) + k8s 1.9.2 https://github.com/istio/istio/issues/4999

johnzheng1975 avatar Apr 18 '18 05:04 johnzheng1975

is mtls on ?

ldemailly avatar Apr 18 '18 17:04 ldemailly

@ldemailly No, we only applied istio.yaml, not applied istio-auth.yaml

johnzheng1975 avatar Apr 19 '18 06:04 johnzheng1975

Same problem ("upstream connect error or disconnect/reset before headers") but with auth enabled.

farcaller avatar May 05 '18 16:05 farcaller

+1 Same issue, auth enabled, istio 0.7.1 and k8s 1.8.9.

Tested locally with k8s 1.9.4 and istio 0.7.1 using istio-auth.yaml and didn't have this issue.

aneslozo avatar May 07 '18 10:05 aneslozo

Also same problem using k8s 1.10.2-gke.1 , istio 0.7.1 auth enabled and istio-injector configured.

ejether avatar May 22 '18 22:05 ejether

Facing this issue on GKE 1.9 and istio 0.u71 auth enabled.

hackintoshrao avatar May 30 '18 00:05 hackintoshrao

We probably need some feedback on the status of Istio - so installers (and automated tests) can wait until istio is fully deployed. Having the istio pods running is not sufficient - auto-injector depends on certificates, which depend on volume propagation. Istio is ready when all components have certs, and the webhook is fully configured.

Which goes back to having proper readiness - one of the main goals for 1.0, but not yet in 0.8

Workaround would be to poll for the webhook config and check that it has the cert set.

costinm avatar Jun 06 '18 04:06 costinm

FWIW, I ran across this thread, and I have this issue on Swarm, not using Istio, but using envoy by itself.

kobenauf avatar Jun 10 '18 17:06 kobenauf

Facing this issue with Istio 0.8.0 and Bookinfo

gbaufake avatar Jun 21 '18 20:06 gbaufake

Facing the same issue with auth enabled on IKS (IBM Kubernetes Service)

kubectl version
Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.5", GitCommit:"32ac1c9073b132b8ba18aa830f46b77dcceb0723", GitTreeState:"clean", BuildDate:"2018-06-21T11:46:00Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"9+", GitVersion:"v1.9.8-2+af27ab4b096122", GitCommit:"af27ab4b096122049e65b75ee29ac115b1d58f6b", GitTreeState:"clean", BuildDate:"2018-06-14T04:07:19Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}

and

istioctl version
Version: 0.8.0
GitRevision: 6f9f420f0c7119ff4fa6a1966a6f6d89b1b4db84
User: root@48d5ddfd72da
Hub: docker.io/istio
GolangVersion: go1.10.1
BuildStatus: Clean

LillyWu avatar Jul 02 '18 07:07 LillyWu

Got same when did cluster nodes recycle.

had to kill ingress gateway pod (which I use to access service)

eigokor avatar Jul 30 '18 11:07 eigokor

Same issue in following k8s and istio version:

# kubectl version
Client Version: version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.1", GitCommit:"b1b29978270dc22fecc592ac55d903350454310a", GitTreeState:"clean", BuildDate:"2018-07-17T18:53:20Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.1", GitCommit:"b1b29978270dc22fecc592ac55d903350454310a", GitTreeState:"clean", BuildDate:"2018-07-17T18:43:26Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}

and istio:

# istioctl version
Version: 1.0.0
GitRevision: 3a136c90ec5e308f236e0d7ebb5c4c5e405217f4
User: root@71a9470ea93c
Hub: gcr.io/istio-release
GolangVersion: go1.10.1
BuildStatus: Clean

liuliqiang avatar Aug 03 '18 02:08 liuliqiang

Same issue trying to run through the Bookinfo sample on EKS. The /productpage route was working fine until I applied the bookinfo sample virtualservices.

Following the instructions here: https://istio.io/docs/tasks/traffic-management/request-routing/

Applying the virtual services with: kubectl apply -f samples/bookinfo/networking/virtual-service-all-v1.yaml

Ghazgkull avatar Aug 20 '18 22:08 Ghazgkull

Yes, there is a timing issue. (hint from salrashid123 comment)

purpletech77 avatar Oct 18 '18 21:10 purpletech77

Hi,

Having the same problem with Istio 1.0.2 on eks.2.

Is there any solution or fix planned for this? It basically makes the use of Istio very problematic now.

Thanks!

moshe0076 avatar Oct 26 '18 07:10 moshe0076

Same issue trying to run through the Bookinfo sample on EKS. The /productpage route was working fine until I applied the bookinfo sample virtualservices.

Following the instructions here: https://istio.io/docs/tasks/traffic-management/request-routing/

Applying the virtual services with: kubectl apply -f samples/bookinfo/networking/virtual-service-all-v1.yaml

You need to run the following before applying the virtual service:

kubectl apply -f samples/bookinfo/networking/destination-rule-all-mtls.yaml

th19E avatar Oct 30 '18 09:10 th19E

Same issue here on local getting:

upstream connect error or disconnect/reset before headers

with

$ istioctl version
Version: 1.0.3
GitRevision: a44d4c8bcb427db16ca4a439adfbd8d9361b8ed3
User: root@0ead81bba27d
Hub: docker.io/istio
GolangVersion: go1.10.4
BuildStatus: Cleann

and

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.3", GitCommit:"2bba0127d85d5a46ab4b778548be28623b32d0b0", GitTreeState:"clean", BuildDate:"2018-05-21T09:17:39Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"windows/amd64"}
Server Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.3", GitCommit:"2bba0127d85d5a46ab4b778548be28623b32d0b0", GitTreeState:"clean", BuildDate:"2018-05-21T09:05:37Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}

when i execute the httpbin example(this one https://raw.githubusercontent.com/istio/istio/release-1.0/samples/httpbin/httpbin.yaml) with and without the sidecar injected i get about 50% of the request, according to grafana, with code 503 and the messege upstream connect error or disconnect/reset before headers .

wolfuser99 avatar Nov 09 '18 00:11 wolfuser99