问题标签 [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.
kubernetes - GKE 入口控制器 svc externalTrafficPolicy 到本地
为了获得真正的客户端IP,我将入口控制器svc(LoadBalancer类型)externalTrafficPolicy更改为Local。但是一旦我将externalTrafficPolicy设置为Local,所有入口将无法访问。所以我想知道,如何在 GKE 的 ingress-nginx 控制器中获取客户端 IP。
google-cloud-platform - GKE 中具有身份验证的 API 网关
对于运行在 Google Cloud Platform 的 GKE 中的微服务,如何创建一个 API 网关来处理:
向外部公开服务并重定向到服务:与 Ingress 类似,每个服务不必公开自己,而只需一个 API 网关
身份验证:在任何流量重定向到服务之前,它由 API 网关进行身份验证
我已经搜索并找到了 Google Cloud Endpoint 和 Ambassador,但它们有点缺乏 GKE 的说明。任何关于它们的好教程也将不胜感激
谢谢!
更新开发:
- Google Cloud Endpoint 原来是 API 服务应用程序容器前面的一个边车容器,它基本上是服务网格。根据本指南:https ://cloud.google.com/endpoints/docs/openapi/architecture-overview#esp
那么问题来了,如何为 GKE 设置 API 网关?
ssl - Google Cloud TCP 外部负载平衡器和 TLS 未自签名
是否可以使用公共证书直接公开 L4 负载均衡器后面的服务器?
该服务器位于 Kubernetes pod 内。它前面有一个 TCP 负载均衡器服务,它创建外部 L4 LB。
我的问题是 TLS 流量没有到达 pod 内的容器。因此,如果您成功使用了类似的配置,我很想知道。
更新
我没有提到流量是GRPC。
这是我所做的:我有一个域和相应的官方证书。我想保护 grpc 连接。
我尝试了两种方法:
- 使用 google ESP 容器,我将证书作为 nginx 机密,将其传递给容器,设置 ssl 端口。在同一个 pod 的 ESP 后面,我有我的 grpc 服务器
在这种情况下,我在客户端收到这样的消息:
D0610 14:38:46.246248584 32401 security_handshaker.cc:176] 安全握手失败:{"created":"@1591792726.246234613","description":"握手失败","file":"../deps/grpc/src/核心/lib/security/transport/security_handshaker.cc","file_line":291,"tsi_code":10,"tsi_error":"TSI_PROTOCOL_FAILURE"}
我看到一些与wireshark的TLS交换,但没有登录esp。
- 没有 ESP,我将证书放在我的 GRPC 服务器中。那里的 GRPC 服务器失败了,如下所示:
错误:1408F10B:SSL 例程:ssl3_get_record:错误的版本号
在google ESP 文档中,我看到我必须证明该域属于我并上传证书(但在哪里)?
更新 2
截至今天,我没有看到任何证据表明它是可行的。
IMO,主要问题是L4具有与证书域名对应的IP。因此,Pod 没有正确的 IP 来证明他们可以使用证书,因此他们对根的请求被拒绝(我没有证据证明这一点,因为我无法从 ESP 中的 nginx 获取调试信息。我已经看到了使用纯 GRPC 服务器解决方案请求)。
kubernetes - GKE 中的 VPC 原生集群无法在 GKE 1.14 中通信
我在 K8s 1.14.10 上创建了两个单独的 GKE 集群。
我遵循了这个和 IP 伪装代理文档。我尝试使用客户端 pod 和服务器 pod 来交换消息来对此进行测试。我正在使用内部节点 IP 发送消息并创建了一个 ClusterIP 来公开 Pod。
我已允许对防火墙规则中的每个实例的请求以进行入口和出口,即0.0.0.0/0。 图片:这是我创建的集群的描述 IP 伪装代理的配置映射与文档中的相同。我能够从 pod 中 ping 另一个节点,但 curl 请求说连接被拒绝并且 tcpdump 显示没有数据。
问题:我需要在 gke 1.14 中从集群 A 与集群 B 通信,并将 ipmasquerading 设置为 true。我要么连接被拒绝,要么 i/o 超时。我尝试过使用内部和外部节点 IP 以及使用负载均衡器。
kubernetes - GKE 外部负载均衡器配置,NEG 为空,运行状况检查不起作用
我正在 GKE 中进行部署,这是我的第一个部署,所以我对这些概念还很陌生,但我知道他们将如何使用这些工具,只需要经验来自信。
首先,我有一个包含大约五个服务的集群,其中两个我想通过外部负载均衡器公开。我已经为 Gcloud 定义了一个注释来在负载平衡下设置这些,这似乎是有效的,我还设置了一个注释来为服务设置一个网络端点组。这是在部署和服务清单中的配置方式。
我想我可能在这里缺少某种配置,但我不确定。
我还看到我可以通过添加在 yaml 中定义 Liveness 检查的位置
我的入口也配置如下:
我已经看到它只需要端口,用于 TCP 检查,但我已经在我的应用程序和负载均衡器中定义了这些。我想我想知道我应该在哪里定义这些检查。
另外,我有一个由注释创建的 NEG 为空的问题,或者这对于清单创建的 NEG 是否正常?
google-kubernetes-engine - 创建 nginx-ingress 控制器后无法创建 Ingress
我正在尝试在 GKE 中创建静态内部入口。看来我们没有直接的办法。在How to set static internal IP to the GKE internal Ingress之后,我遵循了一种解决方法。
这是我用来部署一些示例工作负载和 Ingress 的 Ingress.yaml 文件。
只有在应用此 Yaml 并首先创建“hello-ingress”和 nginx-ingress-controller.yaml 时,我才能创建 Ingress(https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static /provider/cloud/deploy.yaml)稍后。但是我无法对“hello-ingress”进行更改,例如添加新的后端。
我收到以下错误,没有其他日志: 错误:来自服务器的错误(超时):创建“ingress.yaml”时出错:超时:请求未在请求的超时 30 秒内完成
请帮我解决这个问题>
这是日志:
所有命令都成功运行以安装 nginx-ingress 控制器。我在日志中看不到任何变化。
kubectl 获取 svc -n 入口-nginx
kubectl 记录 ingress-nginx-controller-7656c59dc4-lxzr8 -n ingress-nginx
kubectl apply -f ingress.yaml
kubectl 记录 ingress-nginx-controller-7656c59dc4-lxzr8 -n ingress-nginx
flask - NLP Flask 应用程序启动节点在 Google Kubernetes GKE 上超时
我有一个烧瓶应用程序,其中包含一些 NLP 包,并且在启动服务器之前需要一段时间来初始构建一些向量。我过去在使用 Google App Engine 时注意到了这一点,并且我能够在 app.yaml 文件中设置最大超时来解决这个问题。
问题是当我使用这个应用程序在 Kubernetes 上启动我的集群时,我注意到工作人员在日志中不断超时。这是有道理的,因为我确定默认的时间量是不够的。但是,我不知道如何配置 GKE 以让工作人员有足够的时间在开始服务之前完成它需要做的所有事情。
如何增加工作人员在超时之前可以花费的时间?
我删除了旧实例,所以我现在无法获取日志,但如果有人想查看日志,我可以启动它。
是这样的:
我也看到了这个:
显然我不完全知道我在做什么。为什么它说我正在请求 0 内存,我可以为 Kubernetes 节点设置超时量吗?
谢谢您的帮助!
networking - GKE:IP 地址
我注意到部署在 GKE 上的服务有些奇怪,我想了解...
当我启动时,kubectl get services
我可以看到我的服务EXTRNAL-IP。比方说35.189.192.88
。那是我用来访问我的应用程序的那个。
Ben 当我的应用程序尝试访问另一个外部 API 时,API 的所有者从我那里看到另一个 IP 地址:35.205.57.21
你能解释一下为什么吗?是否可以将第二个 IP 设为静态?
因为我的应用程序必须访问外部 API,并且此 API 的所有者通过 IP 地址过滤其访问
谢谢 !
google-cloud-platform - 2020 年 6 月 29 日 Google 网络崩溃后 GKE 节点池显示错误
https://status.cloud.google.com/incident/cloud-networking/20005
在此问题之后,gke 节点池(master in:us-east1-c)抛出错误,导致 terraform 计划崩溃。
我尝试使用获取状态gcloud container clusters describe
,节点池给出了这个错误:
谁能解释这个错误是什么INTERNAL_ERROR: internal error: updateinfo initial cleanup failed
以及如何解决这个问题。
google-cloud-platform - 我们可以打开端口以允许来自 GKE 主机的流量吗?
GKE 主服务器在 HA 模式下运行,并且虚拟机在虚拟机实例页面中也不可见。是否可以通过打开更多端口来允许 GKE 主机上的流量,除了 443 已经为 k8s API 打开。