首页 > 解决方案 > Knative:混淆服务名称和路由

问题描述

我开始使用 Kubernetes、Knative 和 Gloo。我的目标是将一个简单的 http 服务部署到一个 gke 集群。我已经成功地设置了 knative、gloo 并在那里部署了一个名为backend. 下一步是设置路由/api/v1-> backend。我创建了一个名为 的虚拟public-api服务,现在我需要添加一个路由。根据文档,我需要运行

glooctl add route \
    --path-exact /api/v1 \
    --dest-name ???dest-name??? \
    --prefix-rewrite /

我很困惑。我想如果我只是在普通 gke 上安装普通 gloo,这会更容易。但是对于 Knative,我看到了四个上游:

| mb-backend-bdtr2-4tdfq-9090                             | Kubernetes | Accepted | svc name:                      |
|                                                         |            |          | backend-bdtr2-4tdfq            |
|                                                         |            |          | svc namespace: mb              |
|                                                         |            |          | port:          9090            |
|                                                         |            |          |                                |
| mb-backend-bdtr2-4tdfq-9091                             | Kubernetes | Accepted | svc name:                      |
|                                                         |            |          | backend-bdtr2-4tdfq            |
|                                                         |            |          | svc namespace: mb              |
|                                                         |            |          | port:          9091            |
|                                                         |            |          |                                |
| mb-backend-bdtr2-80                                     | Kubernetes | Accepted | svc name:      backend-bdtr2   |
|                                                         |            |          | svc namespace: mb              |
|                                                         |            |          | port:          80              |
|                                                         |            |          |                                |
| mb-backend-bdtr2-zz6t9-80                               | Kubernetes | Accepted | svc name:                      |
|                                                         |            |          | backend-bdtr2-zz6t9            |
|                                                         |            |          | svc namespace: mb              |
|                                                         |            |          | port:          80              |

我有四个问题:

  1. 使用哪一个?mb-backend-bdtr2-80 或 mb-backend-bdtr2-zz6t9-80
  2. 为什么我有两个带有端口 80 的上游?
  3. 这些带有端口 9090 和 9091 的上游是什么?
  4. 如何定义更具描述性的名称?Gloo 的系统上游命名更好,没有任何后缀。

标签: kubernetesknativegloo

解决方案


感谢社区对 solo.io slack 的大力帮助,我得到了答案。

  1. 我应该路由到backend-bdtr2. 这个值可以通过运行得到kubectl get proxy -n gloo-system knative-external-proxy -oyaml
  2. 两个 80 端口的上游是 Knative 的占位符服务路由到原始backend服务。当需要扩展服务时,它们将动态路由到 knative 激活器。显然上游是外部路由,第二个是内部路由(但现在不确定)。
  3. 具有端口 9090 和 9091 的上游是 knative sidecar。
  4. 名称是由 knative 生成​​的,显然目前没有解决方案为它们提供描述性后缀。

推荐阅读