GoogleCloudPlatform / GoogleCloudPlatform/cloud-sql-proxy

`examples/k8s-health-check` folder README advises against readiness probes for (to me) incomprehensible reasons

Đang mở
#2,292 3 bình luận 2 reaction 1 người được giao Được @hessjcg nhận Xem trên GitHub
priority: p2 type: cleanup type: docs
Ngôn ngữ chính
Go
Star
1.4k
Fork
352
Merge trung bình
14 giờ 54 phút
Pull request đã merge (30 ngày)
5

Mô tả

### Description

The [`examples/k8s-health-check` folder's](https://github.com/GoogleCloudPlatform/cloud-sql-proxy/tree/8edfd9d41e020cfe9a3d8defc999a6107cff7bf2/examples/k8s-health-check) `README.md` says:

> For most common usage, adding a readiness healthcheck to the proxy sidecar container is unnecessary. An improperly configured readiness check can degrade the application's availability. [...] Most applications are resilient to transient database connection failures, and do not need to be restarted. [...] You should use the proxy container's readiness probe when these circumstances should cause k8s to terminate the entire pod: [...]

That makes it sound as if a failing readiness probe would cause the Pod to be restarted and we shouldn't use them for the cloud-sql-proxy sidecar for that reason, but this doesn't seem to be the case (?)

Instead, if I understood k8s's docs correctly, a failing readiness probe will _not_ cause a Pod to be restarted, and readiness probes are only important for two things:

1. [Directing traffic to a Pod](https://v1-30.docs.kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#when-should-you-use-a-readiness-probe) - only ready Pods will receive traffic.
2. [Determining whether a Pod in a Deployment is considered "available"](https://v1-30.docs.kubernetes.io/docs/concepts/workloads/controllers/deployment/#min-ready-seconds) in the context of the `RollingUpdate` strategy.

And for (2), it seems to me like having an accurate readiness probe is in fact _essential_, because otherwise the rolling update will consider pods "available" that are really broken, which then causes k8s to stop healthy but outdated Pods to make room for them.

So I don't understand this piece of advice.

Does it just confuse the readiness probe with the liveness probe (maybe because that was introduced later? But then again, the document does mention the liveness probe, too...)?

### Potential Solution

Fix the README so it accurately reflects what a readiness probe is for and how it's relevant, or, if it turns out I'm wrong, link to the paragraphs in the k8s docs where my misconceptions are corrected from `README.md` so other users don't develop the same ones in the future.

### Additional Details

There are similar comments in the `examples/k8s-health-check/proxy_with_http_health_check.yaml` file, which should be corrected as well if it turns out that there is something to correct here.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.