1

我们正在测试 Ambassador Edge Stack,并开始使用处于自动驾驶模式的全新 GKE 私有集群。

我们按照快速入门教程从头开始安装以了解它并最终出现以下错误

Error from server: error when creating "mapping-test.yaml": conversion webhook for getambassador.io/v3alpha1, Kind=Mapping failed: Post "https://emissary-apiext.emissary-system.svc:443/webhooks/crd-convert?timeout=30s": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

我们进行了几轮 DNS 测试,并在不同的命名空间中部署了几个不同的测试 pod,以验证 kube-dns 是否正常工作,一切看起来都很好。resolv.conf 看起来也不错。

大使正在使用emissary-apiext.emissary-system.svc:443应该可以正常解析的主机名(没有 cluster.local)。顺便说一句,使用 FQN(使用 cluster.local)进行查找效果很好。

有什么线索吗?

非常感谢,保重。

4

2 回答 2

2

我想我找到了解决方案,如果以后有人遇到此问题,请在此处发布。

所以我按照这个在 Autopilot 私有集群中部署了 Ambassador Edge Stack。我在尝试部署 Mapping 对象时遇到了同样的错误(步骤 2.2)。

问题是控制平面(API 服务器)试图调用 emissary-apiext.emissary-system.svc:443 但它后面的 pod 正在侦听端口 8443(通过描述服务来解决这个问题)。

所以我添加了一条防火墙规则,以允许 GKE 控制平面与端口 443 上的节点通信。

有问题的防火墙规则称为gke-gke-ap-xxxxx-master。xxxx 称为集群哈希,每个集群都不同。为确保您正在编辑正确的规则,请仔细检查源 IP 范围是否与集群详细信息页面中的“控制平面地址范围”匹配。这是名称以 master 结尾的规则。

只需编辑该规则并将 8443 添加到 tcp 端口即可。它应该工作

于 2022-01-06T14:36:45.233 回答
0

这听起来像是与 GKE Autopilot中的 webhook 限制有关的问题

你在哪个版本的 GKE 上?

我们允许 webhook 拦截的资源和命名空间也存在限制

此外,在规则中指定一个或多个以下资源(及其任何子资源)的 webhook 将被拒绝:

  • 组:“”资源:节点
  • 组:“”资源:持久卷
  • 组:certificates.k8s.io 资源:certificatesigningrequests
  • 组:authentication.k8s.io 资源:tokenreviews

您可能必须检查 Ambassador Edge Stack 的清单才能弄清楚这一点。

于 2022-01-05T09:13:23.627 回答