[helm] Publish not-ready addresses on the tablet headless Service so restarting servers stay resolvable

Đã đóng Phù hợp với người mới
#4,911 4 bình luận 0 reaction 1 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 2 ngày

@morazow đang làm issue này rồi.

Từ ngày 28/10/2026.

  • #4925 của @morazow — đã merge

Đá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 UnknownHostException for 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: true to templates/svc-tablet.yaml, configurable through tablet.service.publishNotReadyAddresses (default true).
  • 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

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. 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.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của apache/fluss

Tất cả issue của apache/fluss

Issue tương tự

Thêm issue về Java

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.