[helm] Publish not-ready addresses on the tablet headless Service so restarting servers stay resolvable
Maintainer thường phản hồi trong vòng 2 ngày
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 76/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- helm, java, kubernetes
- Lĩnh vực
- devops, infrastructure
Hướng nghiên cứu
Đọc templates/svc-tablet.yaml và tìm hiểu cách chart cung cấp các cài đặt dịch vụ; kiểm tra template headless Service của coordinator và values để tìm cấu hình tương ứng. Thêm các cài đặt được yêu cầu, mặc định là true, cho cả hai dịch vụ, sau đó render chart để xác nhận hai headless Service công bố địa chỉ của các pod chưa sẵn sàng, còn các Metrics Service vẫn không thay đổi.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Search before asking
- I searched in the issues and found nothing similar.
Description
Search before asking
- I searched in the issues and found nothing similar.
Motivation
Clients reach tablet servers through the CLIENT listener the chart advertises: <pod>.tablet-server-hs.<namespace>.svc.cluster.local. tablet-server-hs is a headless Service without publishNotReadyAddresses, so Kubernetes publishes a pod's DNS record only while the pod is Ready.
The chart's readiness probe is a cluster-health gate: a restarted tablet server stays NotReady until the whole cluster is GREEN (all replicas in sync, all leaders active), up to healthCheckTimeoutSeconds (1200 s by default). During that window the server is running, is registered in ZooKeeper, takes part in replication and can be named as a leader in metadata, but its hostname doesn't resolve.
What we saw on 1.0.0 during a rolling restart (3 tablet servers, ~11 minutes NotReady per server):
- The lake tiering job failed over twice with
java.net.UnknownHostException: tablet-server-2.tablet-server-hs.<ns>.svc.cluster.local. - Writers that still routed requests to the restarting server failed with
UnknownHostExceptionfor the whole window, and their metadata refreshes against that server failed the same way.
Setting publishNotReadyAddresses: true on the Service by hand made the restarting server resolvable immediately and removed the UnknownHostException errors. This is the usual pattern for StatefulSet peer-discovery Services, which need per-pod DNS regardless of readiness. The deprecated service.alpha.kubernetes.io/tolerate-unready-endpoints annotation is not an alternative: it's ignored by the EndpointSlice controller (tested on Kubernetes 1.35).
It also becomes a requirement if the INTERNAL listener is advertised by DNS name instead of pod IP (#2076): otherwise peers can't reach a restarting server during the gate either.
Readiness still controls rollouts: the StatefulSet controller and PodDisruptionBudgets use pod readiness, not the Service's endpoints, so the gate keeps working.
Solution
- Add
publishNotReadyAddresses: truetotemplates/svc-tablet.yaml, configurable throughtablet.service.publishNotReadyAddresses(defaulttrue). - Do the same for
coordinator-server-hs(coordinator.service.publishNotReadyAddresses), which is the clients' bootstrap address. - Leave the metrics Services unchanged.
Willingness to contribute
- I'm willing to submit a PR!
- Ngôn ngữ chính
- Java
- Star
- 2.2k
- Fork
- 663
- Merge trung bình
- 2 ngày 22 giờ
- Pull request đã merge (30 ngày)
- 117
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Không có hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của apache/fluss
-
[lake/iceberg] Reserved write-mode properties can be set and reset through their `iceberg.` keyCó thể đã có người làm @aphenix-r7 đã nhận 16 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
apache/fluss#4658 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 2 ngày
-
[common] Decimal#hashCode is inconsistent with Decimal#equalsCó thể đã có người làm @firasbouzazi đã nhận 28 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
apache/fluss#4538 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 2 ngày
-
[security] PlainSaslServerProvider conflicts with Hadoop SASL provider causing authentication failureCó thể đã có người làm @xinzhang-hello đã nhận 33 ngày trước. Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
Maintainer thường phản hồi trong vòng 2 ngày
-
[server] KV snapshot scheduling stops permanently after a transient snapshot-init failureCó thể đã có người làm @zhang-arvin đã nhận 33 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
apache/fluss#4489 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 2 ngày
-
[docs] Document advertised-resource and ACL principal ignore-case optionsCó thể đã có người làm @EchoLee5 đã nhận 45 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
Maintainer thường phản hồi trong vòng 2 ngày
Issue tương tự
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 85/100
objectionary/eo#9764 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
apache/doris#69919 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
checkstyle/checkstyle#22354 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
frankframework/frankframework#11966 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Maintainer thường phản hồi trong vòng 1 ngày