给予:
当从集群内部调用荚时,我们将得到一个200响应代码。
当从集群内部调用服务时,我们将得到一个200响应代码。
入口显示为注释:
ingress.kubernetes.io/backends: '{"k8s-be-30606--559b9972f521fd4f":"UNHEALTHY"}'
最重要的是,我们有一个不同的kubernetes集群,其配置完全相同(除了名称空间dev与qa &时间戳&指定的ips和端口之外),其中所有东西都正常工作。
我们已经尝试过移除入口,删除豆荚,提升豆荚,显式定义就绪探针,所有这些都没有改变结果。
从上面判断,由于某种原因,豆荚上的健康检查失败了(即使我们手动地做了它(从集群内部的服务到节点内部ip +节点端口),它返回200 &在qa中,它在同一个容器映像中工作得很好)。
在Stackdriver (或其他地方)中是否有任何日志,我们可以在其中看到通过健康检查所执行的确切请求,以及确切的响应代码是什么?(或者因为某种原因而超时?)
有没有办法更多地了解谷歌进程中正在发生的事情?
我们使用默认的gke入口控制器。
一些附加信息:当与一个完全不同的应用程序相比时,我看到了大量这样的请求:
10.129.128.10 - - [31/May/2018:11:06:51 +0000] "GET / HTTP/1.1" 200 1049 "-" "GoogleHC/1.0"
10.129.128.8 - - [31/May/2018:11:06:51 +0000] "GET / HTTP/1.1" 200 1049 "-" "GoogleHC/1.0"
10.129.128.12 - - [31/May/2018:11:06:51 +0000] "GET / HTTP/1.1" 200 1049 "-" "GoogleHC/1.0"
10.129.128.10 - - [31/May/2018:11:06:51 +0000] "GET / HTTP/1.1" 200 1049 "-" "GoogleHC/1.0"我想应该是健康检查。对于失败的应用程序和qa中的工作版本,我没有看到任何类似的日志。所以我想健康检查最终会在一个完全不同的地方结束&在qa,这也是一个还能得到200的结果。因此,问题仍然存在:我在哪里可以看到通过健康检查执行的实际请求?
另外,对于这个特定的应用程序,我看到了大约8次每秒8次的健康检查,这对我来说似乎有点过分(配置的间隔是60秒)。其他应用程序的健康检查是否可能最终出现在这个应用程序中?
发布于 2018-06-01 14:42:35
GKE正在管理防火墙规则。由于某种原因,入口服务器使用的新(节点)端口不再自动添加到此规则中。在控制台中将新端口手动添加到此规则后,后端服务变得正常。
还需要找出:
无论如何,我希望这能帮助到其他人,因为我们浪费了大量的时间来发现这个问题。
编辑
该错误原来是一个无效的证书,由tls终止,由一个不相关的(除了它是由同一个控制器管理)入口。一旦修复了该规则,规则将再次自动更新。
发布于 2018-06-15 17:23:53
不幸的是,没有面向日志的用户来显示健康检查请求的状态(可能是因为这样会创建大量的日志)。
关于第一个问题,GKE应该自动处理所有防火墙规则,如果不是在您的情况下,这要么是因为节点版本的问题,要么是特定的用户问题(在这种情况下,我建议在问题跟踪器上向Google提交一个bug )。
https://stackoverflow.com/questions/50621389
复制相似问题