GKE 后端健康检查默认设置已损坏

GKE 后端健康检查默认设置已损坏

我读过了并且我理解(我认为) Kubernetes livenessProbes 和 GKE LoadBalancer 健康检查之间的区别。

我的问题是:我通过 NodePort 公开我的大多数 Kube 服务,默认情况下,这会在 GKE 中创建一个新的后端服务,并且还会在 GKE 中创建一个与该后端 HTTP 服务相对应的负载均衡器健康检查。

所有这些自动创建的运行状况检查都假设我在 / 上有一个 HTTP 状态端点,但实际上并没有。我有一个托管在另一个端点上的 HTTP 运行状况检查。

我如何

A)以某种方式提示 GKE 根据 Kubernetes 资源中定义的规则创建负载均衡器规则,而不是盲目地创建一堆监听错误路由的规则,或者

B)让 GKE 不要为每个 NodePort 服务自动创建无效的健康检查。

或者这只是一个不灵活的 Google Cloud 怪癖,我必须更改代码才能解决?

答案1

发现答案是

答:不是

B. 否

通过阅读Kubernetes Ingress Github README.MD

“...目前我们仅依赖 kubernetes 服务 /pod 活跃度探测,并强制 pod 拥有一个对 GCE 以 200 响应的 / 端点。”

答案2

现在,您可以使用 backendconfigs 来配置这些。backendConfig 用于配置入口如何与服务通信,包括告诉它如何进行健康检查。

你需要配置服务以使用 BackendConfig

apiVersion: v1
kind: Service
metadata:
  annotations:
    cloud.google.com/backend-config: '{"default": "my-backendconfig"}'
...

然后你可以直接在 backendconfig 中配置健康检查

apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
  name: my-backendconfig
spec:
  healthCheck:
    checkIntervalSec: INTERVAL
    timeoutSec: TIMEOUT
    healthyThreshold: HEALTH_THRESHOLD
    unhealthyThreshold: UNHEALTHY_THRESHOLD
    type: PROTOCOL
    requestPath: PATH
    port: PORT

相关内容