{"record":{"id":"af12d4f578fcc93d","repo":"cilium/cilium","slug":"d-endpoints-are-not-ready","errorCode":null,"errorMessage":"%d endpoints are not ready","messagePattern":"(.+?) endpoints are not ready","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"cilium-cli/status/status.go","lineNumber":287,"sourceCode":"\t}\n}\n\nfunc (s *Status) parseEndpointsResponse(deployment, podName string, eps []*models.Endpoint, err error) {\n\tif err != nil {\n\t\ts.AddAggregatedError(deployment, podName, fmt.Errorf(\"unable to retrieve cilium endpoint information: %w\", err))\n\t\treturn\n\t}\n\n\tvar notReady uint\n\tfor _, ep := range eps {\n\t\tif ep != nil && ep.Status != nil && ep.Status.State != nil &&\n\t\t\t*ep.Status.State != models.EndpointStateReady {\n\t\t\tnotReady++\n\t\t}\n\t}\n\n\tif notReady > 0 {\n\t\ts.AddAggregatedWarning(deployment, podName, fmt.Errorf(\"%d endpoints are not ready\", notReady))\n\t}\n}\n\nfunc (s *Status) statusSummary(name string) (text string) {\n\tvar errors, warnings int\n\tif a := s.Errors[name]; a != nil {\n\t\tvar disabled bool\n\t\tfor _, c := range a {\n\t\t\terrors += len(c.Errors)\n\t\t\twarnings += len(c.Warnings)\n\n\t\t\tif c.Disabled {\n\t\t\t\tdisabled = true\n\t\t\t}\n\t\t}\n\n\t\tvar s []string\n\t\tif errors > 0 {","sourceCodeStart":269,"sourceCodeEnd":305,"githubUrl":"https://github.com/cilium/cilium/blob/ac7b90affa4baf0642e6685319d56907b3a73a6d/cilium-cli/status/status.go#L269-L305","documentation":"Aggregated warning from parseEndpointsResponse (cilium-cli/status/status.go:287) emitted when one or more Cilium endpoints on a node are not in the Ready state. The CLI counts endpoints whose Status.State is nil or != EndpointStateReady and reports the count. This means workloads are up but their networking is not fully provisioned (identity not resolved, BPF program not regenerated, or endpoint in a fail/locked state).","triggerScenarios":"parseEndpointsResponse counts eps where ep.Status.State is nil or != \"ready\" and notReady > 0, producing '%d endpoints are not ready' as a warning for that pod.","commonSituations":"New pods still initializing during large scale-out, endpoints stuck in 'waiting-for-identity' when the kvstore/identity allocation is slow, 'regenerating' loops from bad NetworkPolicy, terminating pods during rollout, or nodes under CPU pressure delaying BPF compilation.","solutions":["Wait briefly — endpoints transitioning to Ready during rollouts is normal; re-run `cilium status` to confirm it clears.","List unready endpoints: `kubectl get ciliumendpoints -A` and check their state/status fields.","If stuck, check agent logs for identity/regeneration failures and verify kvstore/etcd health, which commonly blocks identity resolution.","Restart the affected endpoint's pod or the agent pod to force re-provisioning if regeneration is wedged."],"exampleFix":"// before\ncilium status\n// 3 endpoints are not ready\n// after: identify which and why\nkubectl get ciliumendpoints -A -o wide\nkubectl -n kube-system logs -l k8s-app=cilium --tail=200 | grep -i 'endpoint.*regenerat'","handlingStrategy":"validation","validationCode":"for _, ep := range eps {\n  if ep == nil || ep.Status == nil || ep.Status.State == nil || *ep.Status.State != models.EndpointStateReady {\n    unready++\n  }\n}\nif unready > 0 { /* defer dependent actions until endpoints converge */ }","typeGuard":"func endpointReady(ep *models.Endpoint) bool {\n  return ep != nil && ep.Status != nil && ep.Status.State != nil &&\n    *ep.Status.State == models.EndpointStateReady\n}","tryCatchPattern":null,"preventionTips":["Wait for all CiliumEndpoints to be Ready before dependent tests or traffic cutover.","Monitor cilium_endpoint_state metrics for endpoints leaving ready state.","Keep identity/kvstore infrastructure healthy — 'waiting-for-identity' is the main cause of unready endpoints."],"tags":["cilium","endpoints","readiness","aggregated-warning"],"backgroundTag":"cilium-endpoints-not-ready","analyzedSha":"ac7b90affa4baf0642e6685319d56907b3a73a6d","analyzedAt":"2026-08-31T18:27:15.868Z","schemaVersion":2},"datasetVersion":"2026-08-31T19:17:28.585Z"}