Knative:混淆服务名称和路由

Knative: confusing service names and routing

我正在开始使用 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 /

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

| 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 的系统上游命名得更好,没有任何后缀。

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

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