[helm] Publish not-ready addresses on the tablet headless Service so restarting servers stay resolvable
メンテナーはふだん 2 日以内に返信
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 76/100
- issue の種類
- 機能追加
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- helm, java, kubernetes
- 領域
- devops, infrastructure
調査の方向性
templates/svc-tablet.yamlを読み、chartがService設定をどのように公開しているかを確認します。coordinatorのheadless Serviceのテンプレートとvaluesを調べ、対応する設定を確認します。両方のServiceに、デフォルトでtrueとなるよう要求された設定を追加し、chartをレンダリングして、2つのheadless Serviceが未準備のアドレスを公開し、metrics Serviceには変更がないことを確認します。
索引モデルが issue の本文から書いたものです。
説明
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!
- 主要言語
- Java
- スター
- 2.2k
- フォーク
- 658
- 平均マージ
- 3日 1時間
- マージ済み PR(30日)
- 120
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドなし
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
apache/fluss のほかの issue
-
[lake/iceberg] Reserved write-mode properties can be set and reset through their `iceberg.` key対応中かも @aphenix-r7 が 14 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
apache/fluss#4658 · コメント 1 件 ·
メンテナーはふだん 2 日以内に返信
-
[common] Decimal#hashCode is inconsistent with Decimal#equals対応中かも @firasbouzazi が 26 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
apache/fluss#4538 · コメント 1 件 ·
メンテナーはふだん 2 日以内に返信
-
[security] PlainSaslServerProvider conflicts with Hadoop SASL provider causing authentication failure対応中かも @xinzhang-hello が 32 日前に担当しました。 オープン
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
メンテナーはふだん 2 日以内に返信
-
[server] KV snapshot scheduling stops permanently after a transient snapshot-init failure対応中かも @zhang-arvin が 31 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
apache/fluss#4489 · コメント 1 件 ·
メンテナーはふだん 2 日以内に返信
-
[docs] Document advertised-resource and ACL principal ignore-case options対応中かも @EchoLee5 が 44 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
メンテナーはふだん 2 日以内に返信
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
oracle/graalvm-reachability-metadata#11472 ·
メンテナーはふだん 1 日以内に返信
-
OkHttp versions 5.4.0+ no longer include baseline-prof.txt対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープンbug
難易度 1/5 1時間未満 初心者へのやさしさ 83/100
lysine-dev/okhttp#9828 ·
メンテナーはふだん 1 日以内に返信
-
status: waiting-for-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
spring-projects/spring-ai#7269 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 89/100
objectionary/hone-maven-plugin#1353 ·
メンテナーはふだん 9 日以内に返信
-
ClassNotFoundException: io.netty.channel.kqueue.KQueueEventLoop stack trace printed during native build on main (Netty 4.2 removed the class)対応中かも @gastaldi が今日担当しました。 オープンarea/netty kind/bug
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
quarkusio/quarkus#57939 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信