【发布时间】:2020-08-31 20:20:56
【问题描述】:
目标
我正在尝试设置一个
Cloud LB -> GKE [istio-gateway -> my-service]
这之前可以工作,但是,我必须在 2 天前重新创建集群并遇到此问题。也许有一些版本变化?
这是我的入口清单文件
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: "my-dev-ingress"
namespace: "istio-system"
annotations:
kubernetes.io/ingress.global-static-ip-name: "my-dev-gclb-ip"
ingress.gcp.kubernetes.io/pre-shared-cert: "my-dev-cluster-cert-05"
kubernetes.io/ingress.allow-http: "false"
spec:
backend:
serviceName: "istio-ingressgateway"
servicePort: 80
问题
Cloud LB 的健康检查问题失败。 Ingress 创建的后端服务会创建 /:80 默认健康检查。
我尝试过的
1) 我尝试将 gke 入口生成的健康检查设置为指向后端配置控制台中的 istio-gateway StatusPort 端口 15020。然后健康检查通过了一段时间,直到后端配置恢复为使用它创建的原始 /:80 健康检查。我什至试图删除它创建的健康检查,然后它只是创建另一个。
2) 我还尝试使用 istio-virtual 服务将运行状况检查路由到 15020 端口,如 here 所示,但没有取得多大成功。
3) 我也尝试将虚拟服务中的所有内容路由到运行状况检查端口
hosts:
- "*"
gateways:
- my-web-gateway
http:
- match:
- method:
exact: GET
uri:
exact: /
route:
- destination:
host: istio-ingress.gke-system.svc.cluster.local
port:
number: 15020
4) 我发现的大多数搜索结果都说在部署中设置readinessProbe 应该告诉入口设置正确的健康检查。但是,我所有的服务都在 istio-gateway 下,我真的不能这样做。
我现在非常迷茫,如果有人能指出我正确的方向,我将不胜感激。谢谢
【问题讨论】:
-
您好,istio 和 gke 版本是什么?是开源 istio 还是 gke 插件?您是重做整个 gke cluter 还是使用了现有元素?如果可能的话,以前版本的 istio 也会有所帮助。
-
感谢您的回复。 GKE 是 1.14.10-gke.36。很抱歉,我找不到有关 Istio 版本的信息,我将继续寻找。我尝试修复当前集群并创建了一个启用了 istio 选项的全新集群(我假设它是 gke 插件)并且两者都有相同的结果。我会看看我是否可以将 gke 集群恢复到以前版本的 istio 谢谢
-
您解决了这个问题了吗? GKE 应根据您的 yaml 文件添加运行状况检查。检查是否可能在 LB 上存在多个可能导致问题的运行状况检查/后端。
-
您好,感谢您的信息,我们还没有解决问题,我们直接在 istio 内的网络应用程序上进行健康检查,这不是主意,但这是我们现在唯一的解决方法。正如您所说,我确实检查了是否有多个健康检查,但找不到任何其他检查。
标签: google-cloud-platform google-kubernetes-engine istio