@@ -193,14 +193,6 @@ summary of the proposal (details follow in subsequent sections):
193
193
kube-proxy iptables mode as described above. IPVS kube-router support for
194
194
dual-stack, on the other hand, is considered outside of the scope of this
195
195
proposal.
196
- <<[ UNRESOLVED] >>
197
- Are we still intending to do this:
198
- - For health/liveness/readiness probe support, the default behavior will not
199
- change and an additional optional field would be added to the pod
200
- specification and is respected by kubelet. This will allow application
201
- developers to select a preferred IP family to use for implementing probes on
202
- dual-stack pods.
203
- <<[ /UNRESOLVED] >>
204
196
- The pod status API changes will leave room for per-IP metadata for future
205
197
Kubernetes enhancements. The metadata and enhancements themselves are out of
206
198
scope.
@@ -227,7 +219,6 @@ Phase 1 (Kubernetes 1.16)
227
219
Phase 2 (Kubernetes 1.16)
228
220
- Multi-family services including kube-proxy
229
221
- Working with a CNI provider to enable dual-stack support
230
- - Change kubelet prober to support multi-address
231
222
- Update component flags to support multiple ` --bind-address `
232
223
233
224
Phase 3 (Planned Kubernetes 1.17)
@@ -281,6 +272,14 @@ Properties field - speced in this KEP - will be empty until CNI spec includes
281
272
properties. Although in theory we can copy the interface name, gateway etc.
282
273
into this Properties map.
283
274
275
+ For health/liveness/readiness probe support, the default behavior will not
276
+ change and [ the default PodIP] (#Default Pod IP Selection) will be used in case
277
+ that no host will be passed as a parameter to the probe. This will simplify the
278
+ logic in favor of avoiding false positives or negatives on the health checks,
279
+ with the disadvantage that it will not be able to use secondary IPs.
280
+ This means that applications must always listen in the Pod default IP in
281
+ order to use healthchecks.
282
+
284
283
### Required changes to Container Runtime Interface (CRI)
285
284
286
285
The PLEG loop + status manager of kubelet makes an extensive use of
@@ -298,6 +297,8 @@ CRI team to coordinate this change.
298
297
}
299
298
```
300
299
300
+ The Kubelet must respect the the order of the IPs returned by the runtime.
301
+
301
302
#### Versioned API Change: PodStatus v1 core
302
303
303
304
In order to maintain backwards compatibility for the core V1 API, this proposal
@@ -546,7 +547,7 @@ In a dual-stack cluster, Services can be:
546
547
resulting service will carry two ` ClusterIPs ` .
547
548
548
549
The above is achieved using the following changes to Service api.
549
- 1 . Add a ` spec.ipFamilyPolicy ` optional field with ` SingleStack ` , ` PreferDualStack ` ,
550
+ 1 . Add a ` spec.ipFamilyPolicy ` optional field with ` SingleStack ` , ` PreferDualStack ` ,
550
551
and ` RequireDualStack ` as possible values.
551
552
2 . Add a ` spec.ipFamilies[] ` optional field with possible values of
552
553
` nil ` , ` ["IPv4"] ` , ` ["IPv6"] ` , ` ["IPv4", "IPv6"] ` , or ` ["IPv6", "IPv4"] ` .
@@ -595,7 +596,6 @@ on all types of services except
595
596
and ` spec.IPFamilies[ 'IPv4', 'IPv6'] ` .
596
597
2 . ` ExternalName ` services: they will be defaulted to ` nil ` to all the new fields
597
598
598
-
599
599
##### Creating a New Single-Stack Service
600
600
601
601
Users who want to create a new single-stack Service can create it using one of
@@ -901,19 +901,19 @@ routed according to the families assigned for services.
901
901
value is expected to match cluster configuration. i.e. creating service with
902
902
a family not configured on server will generate an error.
903
903
2. For Headless without selector the values of `spec.ipFamilyPolicy` and
904
- ` spec.ipFamilies` are semantically validated for correctness but are not
904
+ ` spec.ipFamilies` are semantically validated for correctness but are not
905
905
validated against cluster configuration. This means a headless service without
906
906
selectors can have IP families that are not configured on server.
907
907
908
908
> headless services with no selectors that are not providing values for `ipFamilies`
909
909
and/or `ipfamilyPolicy` apiserver will default to `IPFamilyPolicy : PreferDualStack`
910
- and `IPFamilies : ["IPv4", "IPv6"]`. If the service have `SingleStack` set to
910
+ and `IPFamilies : ["IPv4", "IPv6"]`. If the service have `SingleStack` set to
911
911
`IPFamilyPolicy` the following will be set `IPFamilies : [$cluster_default_family]`
912
912
913
913
# ### Type ExternalName
914
914
915
915
For ExternalName service the value of `spec.ipFamilyPolicy` and
916
- ` spec.ipFamilies` is expected to be `nil`. Any other value for these fields
916
+ ` spec.ipFamilies` is expected to be `nil`. Any other value for these fields
917
917
will cause validation errors. The previous rule does not apply on conversion. apiserver
918
918
will automatically set `spec.ipFamilyPolicy` and `spec.ipFamilies` to nil when converting
919
919
` ClusterIP` service to `ExternalName` service.
0 commit comments