Skip to content

Commit da0fd16

Browse files
authored
Merge pull request kubernetes#1975 from aojea/dualprobes
dual-stack probes/health checks
2 parents 8f3bfe9 + 19bd6bc commit da0fd16

File tree

1 file changed

+14
-14
lines changed

1 file changed

+14
-14
lines changed

keps/sig-network/20180612-ipv4-ipv6-dual-stack.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -193,14 +193,6 @@ summary of the proposal (details follow in subsequent sections):
193193
kube-proxy iptables mode as described above. IPVS kube-router support for
194194
dual-stack, on the other hand, is considered outside of the scope of this
195195
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]>>
204196
- The pod status API changes will leave room for per-IP metadata for future
205197
Kubernetes enhancements. The metadata and enhancements themselves are out of
206198
scope.
@@ -227,7 +219,6 @@ Phase 1 (Kubernetes 1.16)
227219
Phase 2 (Kubernetes 1.16)
228220
- Multi-family services including kube-proxy
229221
- Working with a CNI provider to enable dual-stack support
230-
- Change kubelet prober to support multi-address
231222
- Update component flags to support multiple `--bind-address`
232223

233224
Phase 3 (Planned Kubernetes 1.17)
@@ -281,6 +272,14 @@ Properties field - speced in this KEP - will be empty until CNI spec includes
281272
properties. Although in theory we can copy the interface name, gateway etc.
282273
into this Properties map.
283274

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+
284283
### Required changes to Container Runtime Interface (CRI)
285284

286285
The PLEG loop + status manager of kubelet makes an extensive use of
@@ -298,6 +297,8 @@ CRI team to coordinate this change.
298297
}
299298
```
300299

300+
The Kubelet must respect the the order of the IPs returned by the runtime.
301+
301302
#### Versioned API Change: PodStatus v1 core
302303

303304
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:
546547
resulting service will carry two `ClusterIPs`.
547548

548549
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`,
550551
and `RequireDualStack` as possible values.
551552
2. Add a `spec.ipFamilies[]` optional field with possible values of
552553
`nil`, `["IPv4"]`, `["IPv6"]`, `["IPv4", "IPv6"]`, or `["IPv6", "IPv4"]`.
@@ -595,7 +596,6 @@ on all types of services except
595596
and `spec.IPFamilies[ 'IPv4', 'IPv6']`.
596597
2. `ExternalName` services: they will be defaulted to `nil` to all the new fields
597598

598-
599599
##### Creating a New Single-Stack Service
600600

601601
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.
901901
value is expected to match cluster configuration. i.e. creating service with
902902
a family not configured on server will generate an error.
903903
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
905905
validated against cluster configuration. This means a headless service without
906906
selectors can have IP families that are not configured on server.
907907

908908
> headless services with no selectors that are not providing values for `ipFamilies`
909909
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
911911
`IPFamilyPolicy` the following will be set `IPFamilies: [$cluster_default_family]`
912912

913913
#### Type ExternalName
914914

915915
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
917917
will cause validation errors. The previous rule does not apply on conversion. apiserver
918918
will automatically set `spec.ipFamilyPolicy` and `spec.ipFamilies` to nil when converting
919919
`ClusterIP` service to `ExternalName` service.

0 commit comments

Comments
 (0)