我读过了这并且我理解(我认为) 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 用于配置入口如何与服务通信,包括告诉它如何进行健康检查。
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