Skip to content

kube-proxy only looks at Addresses[0] in EndpointSlice #106267

@danwinship

Description

@danwinship

What happened?

An EndpointSlice can contain up to 1000 Endpoints, which can each contain up to 100 Addresses. Or at least, that's what the docs say, but actually, kube-proxy (or more specifically, pkg/proxy/endpointslicecache.go) only looks at the first Address in each Endpoint:

		endpointInfo := newBaseEndpointInfo(endpoint.Addresses[0], nodeName, zone, portNum, isLocal,
			endpoint.Ready, endpoint.Serving, endpoint.Terminating, endpoint.ZoneHints)

(This is compatible with how EndpointSliceController works, since it would only generate multi-Address Endpoints if a pod had multiple PodIPs of the same address family, which is not allowed. But it's not compatible with manually-generated EndpointSlices.)

What did you expect to happen?

Either all Addresses are used, or else the docs state that only Addresses[0] is used and the field is an array solely for historical reasons.

Metadata

Metadata

Labels

kind/bugCategorizes issue or PR as related to a bug.needs-triageIndicates an issue or PR lacks a `triage/foo` label and requires one.priority/important-longtermImportant over the long term, but may not be staffed and/or may need multiple releases to complete.sig/networkCategorizes an issue or PR as relevant to SIG Network.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions