Skip to content

Commit 73a9f14

Browse files
authored
Merge pull request kubernetes#1360 from robscott/endpointslice-iptypes
Splitting IP address type into IPv4 and IPv6 for EndpointSlices
2 parents 7510193 + e9ccc12 commit 73a9f14

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

keps/sig-network/20190603-EndpointSlice-API.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ see-also:
5050
- [Endpoint Controller (classic)](#endpoint-controller-classic)
5151
- [Roll Out Plan](#roll-out-plan)
5252
- [Graduation Criteria](#graduation-criteria)
53+
- [Splitting IP address type for better dual stack support](#splitting-ip-address-type-for-better-dual-stack-support)
5354
- [Alternatives](#alternatives)
5455
- [FAQ](#faq)
5556
<!-- /toc -->
@@ -127,7 +128,15 @@ type AddressType string
127128
128129
const (
129130
// AddressTypeIP represents an IP Address.
131+
// This address type has been deprecated and has been replaced by the IPv4
132+
// and IPv6 adddress types. New resources with this address type will be
133+
// considered invalid. This will be fully removed in 1.18.
134+
// +deprecated
130135
AddressTypeIP = AddressType("IP")
136+
// AddressTypeIPv4 represents an IPv4 Address.
137+
AddressTypeIPv4 = AddressType(corev1.IPv4Protocol)
138+
// AddressTypeIPv6 represents an IPv6 Address.
139+
AddressTypeIPv6 = AddressType(corev1.IPv6Protocol)
131140
// AddressTypeFQDN represents a FQDN.
132141
AddressTypeFQDN = AddressType("FQDN")
133142
)
@@ -435,12 +444,30 @@ In order to graduate to beta, we will:
435444
- Verify performance/scalability via testing. (Scale tested to 50k endpoints in
436445
4k node cluster)
437446
- Get performance fixes identified in scale testing merged.
447+
- Split `IP` address type into new `IPv4` and `IPv6` address types.
438448
- Implement dual-stack EndpointSlice support in kube-proxy.
439449
- Implement e2e tests that ensure both Endpoints and EndpointSlices are tested.
440450
- Add support for `endpointslice.kubernetes.io/managed-by` label.
441451
- Add FQDN addressType.
442452
- Add support for optional appProtocol field on `EndpointPort`.
443453

454+
### Splitting IP address type for better dual stack support
455+
456+
Although the initial vision for the `IP` address type was to be inclusive of
457+
both IPv4 and IPv6 addresses, that ended up complicating workflows in consumers
458+
like kube-proxy. In that case, and we anticipate many more, the consumer is only
459+
interested in a specific IP family for an endpoint. Both Endpoints and Services
460+
have moved toward using different resources per IP family. It only makes sense
461+
to mirror that behavior with EndpointSlices.
462+
463+
With that in mind, the proposed changes for beta will involve the following:
464+
465+
1. Add 2 additional address types: `IPv4` and `IPv6`.
466+
2. Update the EndpointSlice controller to only create EndpointSlices with these
467+
address types.
468+
3. Deprecate the `IP` address type, making it invalid for new EndpointSlices in
469+
1.17 before becoming fully invalid in 1.18.
470+
444471
## Alternatives
445472

446473
1. increase the etcd size limits

0 commit comments

Comments
 (0)