【问题标题】:Getting 404 from istio bookinfo sample从 istio bookinfo 示例中获取 404
【发布时间】:2020-04-15 16:43:42
【问题描述】:

我正在尝试阅读此处的 Istio 快速入门指南,但在步骤 confirm the app is accessible from outside the cluster 时遇到了问题。

我在 Mac 上运行 docker for desktop 而不是 minikube。

我也在工作中使用代理,但即使我绕过代理,我也会收到以下错误:

$ curl http://${GATEWAY_URL}/productpage -v
*   Trying 127.0.0.1...
* TCP_NODELAY set
* Connection failed
* connect to 127.0.0.1 port 30489 failed: Connection refused
* Failed to connect to 127.0.0.1 port 30489: Connection refused
* Closing connection 0

curl: (7) Failed to connect to 127.0.0.1 port 30489: Connection refused

pod 正在运行:

$ kubectl get pods
NAME                             READY   STATUS    RESTARTS   AGE
details-v1-c5b5f496d-ccw5f       2/2     Running   0          18h
productpage-v1-c7765c886-xm2jd   2/2     Running   0          18h
ratings-v1-f745cf57b-5df2q       2/2     Running   0          18h
reviews-v1-75b979578c-jtc5l      2/2     Running   0          18h
reviews-v2-597bf96c8f-g7bzd      2/2     Running   0          18h
reviews-v3-54c6c64795-gbqqj      2/2     Running   0          18h

我可以在 pod 中卷曲它:

$ kubectl exec -it $(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}') -c ratings -- curl productpage:9080/productpage | grep -o "<title>.*</title>"
<title>Simple Bookstore App</title>

我不确定我做错了什么。非常感谢任何指导!

【问题讨论】:

  • 如果有人想对我投反对票,请解释原因,以便我解决。

标签: docker kubernetes istio docker-desktop docker-for-mac


【解决方案1】:

感谢 istio 社区中的this post,我发现了这种困惑。在那篇文章中,他们提到要找到入口端口,他们正在运行以下命令:

export INGRESS_PORT=$(kubectl -n istio-system get service istio- ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].port}')

这与 bookinfo tutorial 上指示您执行的操作不同,在步骤 3 中您被要求转到 here 以确定您的入口主机和端口。在那里,如果你在本地运行并且没有公共负载均衡器,你会被告知像这样拉节点端口:

export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')
export SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].nodePort}')

如果我改为将 json 元素更改为“端口”,它会完美运行!

export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].port}')

教程中的示例 curl:

$ curl -v -s http://127.0.0.1:80/productpage | grep -o "<title>.*</title>"
*   Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to 127.0.0.1 (127.0.0.1) port 80 (#0)
> GET /productpage HTTP/1.1
> Host: 127.0.0.1
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 200 OK
< content-type: text/html; charset=utf-8
< content-length: 4183
< server: istio-envoy
< date: Tue, 24 Dec 2019 20:28:55 GMT
< x-envoy-upstream-service-time: 940
<
{ [4183 bytes data]
* Connection #0 to host 127.0.0.1 left intact
<title>Simple Bookstore App</title>

希望这可以帮助像我一样挣扎的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2020-11-26
    • 2019-08-21
    • 2018-10-04
    • 2017-12-27
    • 2021-08-21
    相关资源
    最近更新 更多