{"record":{"id":"6949c7e3f9a4fa37","repo":"kubernetes/kubernetes","slug":"error-building-service-resolver-w","errorCode":null,"errorMessage":"error building service resolver: %w","messagePattern":"error building service resolver: %w","errorType":"console","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"cmd/kube-apiserver/app/server.go","lineNumber":237,"sourceCode":") {\n\t// global stuff\n\tcapabilities.Setup(opts.AllowPrivileged, opts.MaxConnectionBytesPerSec)\n\n\t// additional admission initializers\n\tkubeAdmissionConfig := &kubeapiserveradmission.Config{}\n\tkubeInitializers, err := kubeAdmissionConfig.New()\n\tif err != nil {\n\t\treturn nil, nil, nil, fmt.Errorf(\"failed to create admission plugin initializer: %w\", err)\n\t}\n\n\tendpointSliceGetter, err := proxy.NewEndpointSliceIndexerGetter(versionedInformers.Discovery().V1().EndpointSlices())\n\tif err != nil {\n\t\treturn nil, nil, nil, fmt.Errorf(\"failed to create endpoint slice getter: %w\", err)\n\t}\n\n\tserviceResolver, err := buildServiceResolver(opts.EnableAggregatorRouting, genericConfig.LoopbackClientConfig.Host, versionedInformers, endpointSliceGetter)\n\tif err != nil {\n\t\treturn nil, nil, nil, fmt.Errorf(\"error building service resolver: %w\", err)\n\t}\n\tcontrolplaneConfig, admissionInitializers, err := controlplaneapiserver.CreateConfig(opts.CompletedOptions, genericConfig, versionedInformers, endpointSliceGetter, storageFactory, serviceResolver, kubeInitializers)\n\tif err != nil {\n\t\treturn nil, nil, nil, err\n\t}\n\n\tconfig := &controlplane.Config{\n\t\tControlPlane: *controlplaneConfig,\n\t\tExtra: controlplane.Extra{\n\t\t\tKubeletClientConfig: opts.KubeletConfig,\n\n\t\t\tServiceIPRange:          opts.PrimaryServiceClusterIPRange,\n\t\t\tAPIServerServiceIP:      opts.APIServerServiceIP,\n\t\t\tSecondaryServiceIPRange: opts.SecondaryServiceClusterIPRange,\n\n\t\t\tAPIServerServicePort: 443,\n\n\t\t\tServiceNodePortRange:      opts.ServiceNodePortRange,","sourceCodeStart":219,"sourceCodeEnd":255,"githubUrl":"https://github.com/kubernetes/kubernetes/blob/b882c60b4023bdf09264c2d5d30a2cadebc240fb/cmd/kube-apiserver/app/server.go#L219-L255","documentation":"Emitted by CreateKubeAPIServerConfig when buildServiceResolver fails. The service resolver maps aggregator webhook/proxy Service objects to dial targets; depending on --enable-aggregator-routing it builds either a ClusterIP resolver or an Endpoint-based resolver over the core/v1 Service lister and loopback host.","triggerScenarios":"CreateKubeAPIServerConfig at server.go:235-237 when buildServiceResolver (server.go:297) returns an error. In stock code buildServiceResolver only errors if its internal construction paths fail (the loopback parse is swallowed, so failures are rare and usually from nil informers in custom builds).","commonSituations":"Mostly seen with custom apiserver aggregation setups; can surface if the versioned informer factory was not provided to CreateKubeAPIServerConfig, or with malformed loopback host config.","solutions":["Inspect the wrapped error for the underlying resolver construction failure.","Verify the versionedInformers passed to CreateKubeAPIServerConfig is initialised and the core/v1 Services informer is available.","If you do not need aggregation, confirm --enable-aggregator-routing is unset (defaults to ClusterIP resolver, the simpler path)."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"// In custom server assembly, surface the wrapped resolver error.\nconfig, _, _, err := app.CreateKubeAPIServerConfig(opts, genericConfig, informers, storageFactory)\nif err != nil {\n    var resolverErr *proxy.ResolverError // hypothetical; match real type from wrapped chain\n    if errors.As(err, &resolverErr) {\n        return fmt.Errorf(\"service resolver setup failed (check informers/aggregator routing): %w\", err)\n    }\n    return err\n}","preventionTips":["Pass a fully-initialised versioned informer factory to CreateKubeAPIServerConfig.","Only enable --enable-aggregator-routing when the aggregator chain is actually used."],"tags":["kubernetes","kube-apiserver","networking","aggregator","startup"],"analyzedSha":"b882c60b4023bdf09264c2d5d30a2cadebc240fb","analyzedAt":"2026-08-07T04:07:48.144Z","schemaVersion":2},"datasetVersion":"2026-08-07T07:17:06.508Z"}