GKE 上的 Clean Ambassador Edge Stack 安装因 DNS 解析失败
Clean Ambassador Edge Stack install on GKE fails with DNS resolving
我们正在测试 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 测试,并在不同的命名空间中部署了一些不同的测试 pods 以验证 kube-dns 是否正常工作,最终一切看起来都很好。 resolv.conf 看起来也不错。
Ambassador 使用的主机名 emissary-apiext.emissary-system.svc:443
(没有 cluster.local)应该可以很好地解析。使用 FQN(使用 cluster.local)进行查找工作正常。
有什么线索吗?
多谢保重
这听起来像是与 GKE 中的 webhook 限制相关的问题 Autopilot
您使用的是哪个版本的 GKE?
我们允许 webhook 拦截的资源和命名空间也有限制
Additionally, webhooks which specify one or more of following
resources (and any of their sub-resources) in the rules, will be
rejected:
- group: "" resource: nodes
- group: "" resource: persistentvolumes
- group: certificates.k8s.io resource: certificatesigningrequests
- group: authentication.k8s.io resource: tokenreviews
您可能需要查看 Ambassador Edge Stack 的清单才能弄清楚。
我想我找到了解决方案,如果以后有人遇到这个问题,请在此处发布。
所以我跟着 this 在 Autopilot 私有集群中部署了 Ambassador Edge Stack。我在尝试部署映射对象(步骤 2.2)时遇到了同样的错误。
问题是控制平面(API 服务器)正在尝试调用 emissary-apiext.emissary-system.svc:443 但它后面的 pods 正在监听在端口 8443 上(通过描述服务来计算)。
所以我添加了一条防火墙规则以允许 GKE 控制平面与端口 443 上的节点通信。
有问题的防火墙规则称为 gke-gke-ap-xxxxx-master。 xxxx 称为集群哈希,每个集群都不同。为确保您正在编辑正确的规则,请仔细检查源 IP 范围是否与集群详细信息页面中的“控制平面地址范围”相匹配。这就是名称以 master 结尾的规则。
只需编辑该规则并将 8443 添加到 tcp 端口。它应该工作
我们正在测试 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 测试,并在不同的命名空间中部署了一些不同的测试 pods 以验证 kube-dns 是否正常工作,最终一切看起来都很好。 resolv.conf 看起来也不错。
Ambassador 使用的主机名 emissary-apiext.emissary-system.svc:443
(没有 cluster.local)应该可以很好地解析。使用 FQN(使用 cluster.local)进行查找工作正常。
有什么线索吗?
多谢保重
这听起来像是与 GKE 中的 webhook 限制相关的问题 Autopilot
您使用的是哪个版本的 GKE?
我们允许 webhook 拦截的资源和命名空间也有限制
Additionally, webhooks which specify one or more of following resources (and any of their sub-resources) in the rules, will be rejected:
- group: "" resource: nodes
- group: "" resource: persistentvolumes
- group: certificates.k8s.io resource: certificatesigningrequests
- group: authentication.k8s.io resource: tokenreviews
您可能需要查看 Ambassador Edge Stack 的清单才能弄清楚。
我想我找到了解决方案,如果以后有人遇到这个问题,请在此处发布。
所以我跟着 this 在 Autopilot 私有集群中部署了 Ambassador Edge Stack。我在尝试部署映射对象(步骤 2.2)时遇到了同样的错误。
问题是控制平面(API 服务器)正在尝试调用 emissary-apiext.emissary-system.svc:443 但它后面的 pods 正在监听在端口 8443 上(通过描述服务来计算)。
所以我添加了一条防火墙规则以允许 GKE 控制平面与端口 443 上的节点通信。
有问题的防火墙规则称为 gke-gke-ap-xxxxx-master。 xxxx 称为集群哈希,每个集群都不同。为确保您正在编辑正确的规则,请仔细检查源 IP 范围是否与集群详细信息页面中的“控制平面地址范围”相匹配。这就是名称以 master 结尾的规则。
只需编辑该规则并将 8443 添加到 tcp 端口。它应该工作