Skip to content

Commit 10abdff

Browse files
fix(zookeeper): add publishNotReadyAddresses to headless service
The headless service governing the ZK StatefulSet was missing publishNotReadyAddresses: true. With K8s 1.22+ EndpointSlice handling (strict in 1.33+ where the legacy Endpoints API is deprecated), CoreDNS withholds DNS records for pods whose readiness probe has not yet passed. For a StatefulSet that needs sibling DNS to bootstrap a quorum (as ZK does), this creates a chicken-and-egg deadlock: zk-0 starts -> looks up DNS for zk-1, zk-2 -> NXDOMAIN -> can't form quorum -> not Ready -> own DNS not published -> same for zk-1 and zk-2 -> cluster never forms. Symptoms in CI logs: WARN [WorkerSender] Failed to resolve address: zookeeper-1.zookeeper.<ns>.svc.cluster.local java.net.UnknownHostException Reproduced locally on a kind v0.30.0 / k8s 1.34 cluster; verified patching the live service with publishNotReadyAddresses fixed it. This bug went unnoticed for years because pre-K8s-1.22 CoreDNS was lenient about the legacy Endpoints API's notReadyAddresses path. The lint-test-fid CI started failing in April 2026 when helm/kind-action@v1 (a floating tag) rolled forward to a release using kindest/node:v1.35.0, which strictly enforces the readiness condition on EndpointSlice entries. Bumps zookeeper chart version 0.1.6 -> 0.1.7. No app changes.
1 parent 36c17ab commit 10abdff

2 files changed

Lines changed: 6 additions & 1 deletion

File tree

charts/zookeeper/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ type: application
1515
# This is the chart version. This version number should be incremented each time you make changes
1616
# to the chart and its templates, including the app version.
1717
# Versions are expected to follow Semantic Versioning (https://semver.org/)
18-
version: 0.1.6
18+
version: 0.1.7
1919

2020
# This is the version number of the application being deployed. This version number should be
2121
# incremented each time you make changes to the application. Versions are not expected to

charts/zookeeper/templates/service.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@ spec:
88
type: {{ .Values.service.type }}
99
{{- if contains "ClusterIP" .Values.service.type }}
1010
clusterIP: None
11+
# Required for StatefulSet pod-DNS resolution during cluster bootstrap.
12+
# ZK pods need DNS for sibling pods (zookeeper-0,1,2) BEFORE they are Ready
13+
# so they can form a quorum. Without this, K8s 1.22+ EndpointSlice handling
14+
# withholds DNS records until pods are Ready -> chicken-and-egg deadlock.
15+
publishNotReadyAddresses: true
1116
{{- end }}
1217
ports:
1318
- port: {{ .Values.service.port }}

0 commit comments

Comments
 (0)