Skip to content

Commit 4cfa74a

Browse files
committed
Report all healthcheck errors
Before: ``` E0225 23:47:06.883670 8 kubeadm_control_plane_controller.go:577] controllers/KubeadmControlPlane "msg"="waiting for control plane to pass etcd health check before adding an additional control plane machine" "error"="there are 3 control plane nodes, but 0 etcd members" "cluster"="test" "kubeadmControlPlane"="test" "namespace"="test" ``` After: ``` E0226 01:48:29.726200 166 kubeadm_control_plane_controller.go:577] controllers/KubeadmControlPlane "msg"="waiting for control plane to pass etcd health check before adding an additional control plane machine" "error"="[could not check etcd member health, node \"ip-10-0-0-3.ec2.internal\": failed to create etcd client: unable to create etcd client: context deadline exceeded, node \"ip-10-0-0-197.ec2.internal\": failed to create etcd client: unable to create etcd client: context deadline exceeded, node \"ip-10-0-0-59.ec2.internal\": failed to create etcd client: unable to create etcd client: context deadline exceeded]" "cluster"="test" "kubeadmControlPlane"="test" "namespace"="test" ```
1 parent 25b281e commit 4cfa74a

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

controlplane/kubeadm/internal/cluster.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,11 +121,11 @@ type healthCheck func(context.Context) (healthCheckResult, error)
121121
// healthCheck will run a generic health check function and report any errors discovered.
122122
// It does some additional validation to make sure there is a 1;1 match between nodes and machines.
123123
func (m *ManagementCluster) healthCheck(ctx context.Context, check healthCheck, clusterKey types.NamespacedName, controlPlaneName string) error {
124+
var errorList []error
124125
nodeChecks, err := check(ctx)
125126
if err != nil {
126-
return err
127+
errorList = append(errorList, err)
127128
}
128-
errorList := []error{}
129129
for nodeName, err := range nodeChecks {
130130
if err != nil {
131131
errorList = append(errorList, fmt.Errorf("node %q: %v", nodeName, err))
@@ -388,6 +388,10 @@ func (c *cluster) etcdIsHealthy(ctx context.Context) (healthCheckResult, error)
388388
}
389389
}
390390

391+
if len(response) > 0 {
392+
return response, errors.New("could not check etcd member health")
393+
}
394+
391395
// Check that there is exactly one etcd member for every control plane machine.
392396
// There should be no etcd members added "out of band.""
393397
if len(controlPlaneNodes.Items) != len(knownMemberIDSet) {

0 commit comments

Comments
 (0)