首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GCE健康检查设置正在恢复为默认设置

GCE健康检查设置正在恢复为默认设置
EN

Server Fault用户
提问于 2018-06-14 22:23:22
回答 3查看 2.6K关注 0票数 3

我在GCP上设置了一个负载均衡器,它使用Kubernetes引擎中的一个侵入器。

默认情况下,后端服务将所有实例注册为不健康的。我将健康检查更新为HTTPS协议和/healthz url,因为这是我的健康检查的url。

我把它放在一旁几分钟,后端服务状态--现在所有的实例都是健康的--然后我在日志中看到我的pod在/healthz上为200个响应服务。

我导航到页面,它开始显示502错误。我回到控制台中的健康检查页面,健康检查返回到HTTP /。

是什么原因导致健康检查恢复到HTTP?下面的日志显示,在10分钟内,健康检查继续请求https i设置,然后请求更改为http。

代码语言:javascript
复制
...
[W 180621 20:02:35 iostream:1451] SSL Error on 9 ('10.128.0.14', 48346): [SSL: HTTP_REQUEST] http request (_ssl.c:833)
[W 180621 20:02:35 iostream:1451] SSL Error on 9 ('10.128.0.13', 63030): [SSL: HTTP_REQUEST] http request (_ssl.c:833)
[I 180621 20:02:43 web:2106] 200 GET /healthz (10.128.0.14) 0.75ms
[I 180621 20:02:43 web:2106] 200 GET /healthz (10.128.0.13) 0.80ms
[I 180621 20:02:43 web:2106] 200 GET /healthz (10.128.0.14) 0.74ms
...
[I 180621 20:05:46 web:2106] 200 GET /healthz (10.128.0.13) 1.26ms
[I 180621 20:05:46 web:2106] 200 GET /healthz (10.128.0.14) 0.63ms
[I 180621 20:05:46 web:2106] 200 GET /healthz (10.128.0.15) 0.64ms
[W 180621 20:05:46 iostream:1451] SSL Error on 9 ('10.128.0.14', 49971): [SSL: HTTP_REQUEST] http request (_ssl.c:833)
[W 180621 20:05:46 iostream:1451] SSL Error on 9 ('10.128.0.15', 62893): [SSL: HTTP_REQUEST] http request (_ssl.c:833)
[W 180621 20:05:48 iostream:1451] SSL Error on 9 ('10.128.0.13', 52191): [SSL: HTTP_REQUEST] http request (_ssl.c:833)
[W 180621 20:05:48 iostream:1451] SSL Error on 9 ('10.128.0.13', 60549): [SSL: HTTP_REQUEST] http request (_ssl.c:833)

编辑:我添加了准备好的探测器,在这个吊舱上,入口是连接的。

代码语言:javascript
复制
readinessProbe:
  httpGet:
    port: 8902
    scheme: HTTPS
    path: /healthz
  initialDelaySeconds: 5
  periodSeconds: 10
  successThreshold: 1
EN

回答 3

Server Fault用户

发布于 2018-06-27 08:28:32

我查过了,这应该是故意的行为。

Kubernetes控制健康检查,并从kubernetes集群中的数据配置它。Kubernetes没有看到通过gcloud对健康检查所做的任何改变。

因此,我想它检查它和任何修改被恢复是正常的。

使用readinessProbe的解决方案。

也请看一下

当前,所有服务后端必须满足以下任一项要求,才能通过从GCE负载均衡器发送给它的HTTP(S)健康检查:

  1. 在“/”上用200回答。内容并不重要。
  2. 将任意URL公开为支持服务的豆荚上的准备状态探针。

侵入控制器首先寻找一个兼容的准备状态探针,如果它找到了一个,它采用它作为GCE负载平衡器的HTTP(S)健康检查。如果没有就绪探测,或者准备状态探测需要特殊的HTTP报头,则宏控制器将GCE负载平衡器的HTTP健康检查指向'/‘。

票数 2
EN

Server Fault用户

发布于 2019-01-31 20:56:22

我也有过同样的问题。

问题是我的readinessProbe只被设置为HTTPS。

代码语言:javascript
复制
readinessProbe:
  httpGet:
    path: "/health?ready=1"
    port: 8080
    scheme: HTTPS

但是,GCE后端自动假定您的服务响应HTTP,默认情况下将扫描那里的健康检查。

您可以了解更多关于GKE Ingresses和Heath检查如何响应这里的信息。

要解决这个问题,我需要更新我的服务,以便只使用HTTPS进行响应。

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  annotations:
    cloud.google.com/app-protocols: '{"my-port-name":"HTTPS"}'
spec:
  ports:
  - port: 8080
    targetPort: 8080
    name: my-port-name

这将导致入口创建用于通过HTTPS扫描readinessProbes的后端服务。

注意:在完成此操作之前,一定要先删除您的LoadBalancer和HealthCheck,然后重新创建它,因为它不会响应应用于您的服务的更新。

票数 1
EN

Server Fault用户

发布于 2018-06-24 02:58:35

看起来您的后端只在HTTPS协议上服务,但是您已经为HTTPS协议部署了一个Ingress资源。部署后手动更改配置不是解决方案,因为主服务器将还原更改以符合清单。根据本文件您可以通过指定包含TLS私钥和证书的秘密来保护入侵域。目前,Ingress只支持一个TLS端口443,并假定TLS终止。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/916748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档