问题标签 [gke-networking]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
255 浏览

google-kubernetes-engine - 在 GKE 上创建的入口的运行状况检查失败

我正在使用带有以下配置的入口为 GKE 上的 consul ui 创建一个负载均衡器

该服务hashicorp-consul-ui是 clusterIP 类型的服务。

另外,我正在创建以下 backendConfig

我将以下注释添加到 clusterIP 服务hashicorp-consul-ui

'cloud.google.com/backend-config': '{"ports": {"80":"consul-ui-backendconfig"}}'

这个 backendConfig 为 ingress 创建的后端服务创建健康检查,这个端点返回 200。但是健康检查失败并且 ingress 处于 Unhealthy 状态

我已经启用了健康检查日志,并且我在 NEG 上获得了以下日志

另外,不知道为什么我只得到这个日志一次,我不应该定期得到这些日志吗?

另外,谁能指导我如何解决这个 healthCheck 问题?

0 投票
1 回答
287 浏览

google-kubernetes-engine - GKE Helm http2 连接丢失

我尝试使用 n1-highmem-4 池创建 GKE 集群(版本:1.18.15-gke.1500)。在我尝试安装掌舵图之前,一切正常。helm 二进制文件(版本:3.5.2)最终出现错误“http2 连接丢失”。GKE 触发自动修复模式。我不明白为什么,因为我使用 kubectl 创建一些 configmap 没有问题。您是否知道我可以在哪里找到有关台球机或 GKE 总体规划的日志?

0 投票
1 回答
63 浏览

gke-networking - GKE Windows 节点,健康检查

我不习惯发东西,但我有问题。在 GKE 上,我为 windows 节点上的 windows pod 设置了负载均衡器类型的服务,但负载均衡器的运行状况检查对于 windows 节点是 KO。我可以使用 externalTrafficPolicy: cluster 但我的应用程序需要 Local。

如何解决?

谢谢你的帮助。

Alexandre Gué,Infra PI ELECTRONIQUE 团队负责人

0 投票
1 回答
746 浏览

kubernetes - 创建指向两个服务的 Kubernetes 入口

要求:想要使用带有 HTTPS 的入口部署 Minio 和另一个后端服务(不用于生产目的)

我一直在尝试创建一个入口,以从 GKE 中的 Kubernetes 集群外部访问两个服务。这些是我尝试过的尝试。

尝试一

尝试二

尝试三

尝试四

但是,上述尝试都不适合我的要求。要么给出 404 0r 503。但我可以确认为每个服务创建单独的入口可以正常工作,如下所示。

更改域服务器也需要花费大量时间来测试,因此创建主机非常烦人,因为我必须等待大量时间来测试我的代码。还有什么我可以尝试的吗?

像下面这样的东西是理想的:

https://34.452.234.45:9000 > 将访问 minio

https://34.452.234.45:8080 > 将访问奥斯卡

你的建议和意见对我真的很有帮助。

Minio helm 图表:https ://github.com/minio/charts

Minio 部署

奥斯卡舵图:https ://github.com/grycap/helm-charts/tree/master/oscar

奥斯卡部署

0 投票
0 回答
139 浏览

kubernetes - GKE 上带有 Macvlan 的第二个 NIC

我需要为 GKE 上的一些特定 K8s pod 添加第二个接口,这些 pod 需要从 Internet 上的公共用户直接访问。所以我使用了 Multus 并像这样定义了一个 Macvlan cni:

10.162.0.1 是我的 K8s 节点在 GCP 中的默认网关。所以,我想在这种情况下,豆荚应该可以访问外部。但是在 pod 中,只有一个默认网关来路由内部 pod 流量。另外,由于权限问题,我无法添加任何路线。

问题:

我的预期错了吗?我应该如何使用 Macvlan 为这些 pod 创建一个公共接口?

0 投票
3 回答
610 浏览

google-kubernetes-engine - 从私有 GKE 集群连接到公有 Cloud SQL

我正在尝试使用 cloud-sql-proxy 从 GKE 集群连接到具有公共 IP 的 Cloud SQL 实例。我使用以下命令创建了集群:

我使用以下命令创建了 Cloud SQL:

我还使用以下命令设置了一个服务帐户:

pod 中 cloud-sql-proxy 的 sidecar 容器设置如下:

尽管如此,当我的应用程序尝试连接到 Cloud SQL 实例时,我可以在 cloud-sql-proxy 日志中看到以下错误:

我检查了一下,pod 可以访问 Internet(我可以访问www.google.com),因此它应该能够连接到 Cloud SQL 的公共 IP。我可以在笔记本电脑上毫无问题地使用 cloud-sql-proxy 并连接到那里的实例。我错过了什么?我还能检查什么?

我找到了GKE 私有集群和云 sql 代理连接,但我启用了 SQL Admin API。Private GKE 和 Cloud SQL 之间的连接仅涉及无法访问 Internet 的 GKE 集群。

0 投票
1 回答
841 浏览

docker - GKE Autopilot Ingress 部署后 5-15 分钟返回 502 错误

我使用 GKE 在运行最新版本 Kubernetes 1.18.15-gke.1501(ClusterIP

每当我使用新映像更新部署时,我都会遇到大约 5-15 分钟的停机时间,负载均衡器会返回 502 错误。似乎控制平面创建了新的、更新的 pod,允许通过服务级别的健康检查(不是负载均衡器,它还没有创建 NEG),然后同时杀死旧的 pod是时候设置新的 NEG 了。然后它直到一段时间后才会删除旧的 NEG。

在此处输入图像描述

pod 上的日志显示运行状况检查正在进行,但 GKE 仪表板显示 Ingress 状态的结果不一致。入口将显示正常,但服务将显示 502。

我尝试过的事情

  • 将 pod 的数量从 1 个增加到 3 个。这对某些部署有所帮助,但在其他所有部署中,它都会增加负载均衡器正确解析所需的时间。
  • 尝试设置maxSurge为 1 和maxUnavailable0。这根本没有改善停机时间。
  • 添加lifecycle.preStop.exec.command: ["sleep", "60"]到部署上的容器。这是 GKE 文档中建议的。
  • 多次重新创建入口、服务、部署和集群。
  • 向服务中添加一个BackendConfig会增加其消耗速度的服务。
  • 在文档中添加一个准备门应该可以解决这个问题,但由于某种原因没有?

上述任何一项都没有帮助或对事情下降的时间产生任何明显的影响。

我真的,真的很困惑为什么这不起作用。感觉就像我遗漏了一些非常明显的东西,但这也是一个如此简单的配置,你会认为它......只是工作?有人知道发生了什么吗?

配置文件

部署配置:

服务配置:

后端配置:

入口配置:

0 投票
1 回答
202 浏览

kubernetes - 无法访问 GKE 上的 Kubernetes Ingress (Istio)

我在 GKE 上设置了 Istio(Kubernetes Ingress 模式,不是 Istio 网关)。但是,我无法使用 curl 从外部访问

istio-ingressgateway LoadBalancer 10.48.11.240 35.222.111.100 15020:30115/TCP,80:31420/TCP,443:32019/TCP,31400:31267/TCP,15029:30180/TCP,15030:3105226/TCP,150313: TCP,15032:30437/TCP,15443:31792/TCP 41h

curl: (7) 无法连接到 35.222.111.100 端口 80: Connection refused

这是 Ingress 的配置:

这是服务的配置:

如果我在本地机器(MacOS)上为 Docker Desktop 使用相同的配置,它工作正常。

0 投票
0 回答
77 浏览

google-cloud-platform - 如何在 GKE 中调试 backend_connection_closed_before_data_sent_to_client?

backend_connection_closed_before_data_sent_to_clientGKE负载平衡出现以下错误

据此_

在将响应代理到客户端之前,后端意外关闭了与负载均衡器的连接。如果负载均衡器将流量发送到另一个实体,则可能会发生这种情况。另一个实体可能是第三方负载平衡器,其 TCP 超时时间短于外部 HTTP(S) 负载平衡器的 10 分钟(600 秒)超时。第三方负载均衡器可能在 VM 实例上运行。手动将目标服务上的 TCP 超时(keepalive)设置为大于 600 秒可能会解决此问题。

我们所做的

    1. 将超时更改为 620 秒以在后端保持活动状态
    1. 将 LB 后端服务超时设置的超时更改为 620 秒

receiveTimestamp但是,和的时间跨度timestamp是2秒,这让我们很困惑,为什么超时这么短?

还有一个问题,502 仅来自特定代理“Dalvik/2.1.0”,这是一件奇怪的事情。所有其他客户端都可以正确地将数据发布到后端服务器。

我们如何在 GKE 中调试这个问题?

0 投票
0 回答
246 浏览

google-cloud-platform - 无法通过 terraform 添加“google_compute_network_peering_routes_config”以将私有 SQL 实例连接到我的非私有 VPC 集群

我有一个 GKE 集群并在 GCP 上添加了一个私有 SQL-postgres 实例,为了建立正确的连接,我必须在 VPC 对等连接上导出自定义路由以使其工作。但是,我无法通过 terraform 更新 VPC 对等连接。SQL 实例和 GKE 集群都在同一个 VPC 网络上

这是地形代码

这是我得到的错误代码,除了它是 400 错误之外,我无法完全理解

我不得不使用 gcloud 导出自定义路由,所以我想知道 terraform 无法找到 Peering_project 的问题,这是我不拥有或创建的一些谷歌网络项目

该命令运行良好

我如何使用 terraform 做到这一点?Terraform 版本:0.12.30 Google Provider 版本:3.60