我在 cent os 中设置了 kubernetes 主/节点。在将 ambassador 设置为 API 网关后,我尝试了一个带有 QOTM 服务的示例路由,当我向路由发送 http 请求时,我在响应中收到 503 Service unavailable,其正文为 =“no healthy upper”。但是当我将同一个 qotm 服务作为独立的 docker 容器运行时,它适用于该路由。在 kubernetes 中设置 ambassador 时,有什么特别需要注意的吗?
kubectl exec ambassador-589c864695-cg556 -- curl -v 10.101.64.22/qotm/*
> no healthy upstream* Trying 10.101.64.22...
> * TCP_NODELAY set
> % Total % Received % Xferd Average Speed Time Time Time Current
> Dload Upload Total Spent Left Speed
> 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* > Connected to 10.101.64.22 (10.101.64.22) port 80 (#0)
> GET /qotm/* HTTP/1.1
> Host: 10.101.64.22
> User-Agent: curl/7.63.0
> Accept: */*
>
< HTTP/1.1 503 Service Unavailable
< content-length: 19
< content-type: text/plain
< date: Fri, 22 Mar 2019 03:54:16 GMT
< server: envoy
<
{ [19 bytes data]
100 19 100 19 0 0 19000 0 --:--:-- --:--:-- --:--:-- 19000
* Connection #0 to host 10.101.64.22 left intact
答案1
这通常是因为路由服务无法找到主机来重定向您的请求。这甚至可能是服务/路由配置中的任何简单拼写错误或错误造成的。
我建议您仔细检查您的服务和路由 yaml 文件,或者仅在您的原始帖子上分享清单也可以帮助您更快地获得解决方案。
笔记Kubernetes 无法识别服务注释中的配置错误,因此在应用清单时不会看到错误。
但您可以检查大使舱的日志。首先列出舱:
kubectl get pods -l service=ambassador
然后检查这个 pod 的日志,看看是否有错误
kubectl logs -f ambassador-7784c84f8f-6wmlr
如果仍然有问题,请提供您的文件
答案2
通过安装 WeaveNet 作为 CNI 解决了该问题。我无法进一步分析并找出使用 Flannel 时的问题所在。