Merge pull request #33146 from MrHohn/kubedns-readiness

Automatic merge from submit-queue

Tune down initialDelaySeconds for readinessProbe.

Fixed #33053.

Tuned down the `initialDelaySeconds`(original 30s) for readiness probe to 3 seconds and `periodSeconds`(default 10s) to 5 seconds to shorten the initial time before a dns server pod being exposed. This configuration passed DNS e2e tests and did not even hit any readiness failure(for kube-dns) with a GCE cluster with 4 nodes during the experiments.

For scaling out kube-dns servers, it took less than 10s for servers being exposed after they appeared as running, which is much faster than 30+s(the original cost).

`failureThreshold` is left as default(3) and it would not lead to restart because the status of readiness probe would only affect whether endpoints being exposed in service or not(in the dns service point of view). According to the implementation of [prober](https://github.com/kubernetes/kubernetes/blob/master/pkg/kubelet/prober/worker.go), the number of retries for readiness probe is unbounded. Hence there is no obvious effect if the readiness probe fail several times in the beginning. 

The state machine of prober could be illustrated with below figure:

![drawing](https://cloud.githubusercontent.com/assets/8681801/18693503/fb4466dc-7f56-11e6-8671-0a14c4835d24.jpeg)

I want to see the e2e result of this PR for further evaluation.

@thockin @bprashanth
pull/6/head
Kubernetes Submit Queue 2016-09-27 05:02:39 -07:00 committed by GitHub
commit 9e4ba1866b
5 changed files with 5 additions and 5 deletions

View File

@ -68,7 +68,7 @@ spec:
scheme: HTTP
# we poll on pod startup for the Kubernetes master service and
# only setup the /readiness HTTP server once that's available.
initialDelaySeconds: 30
initialDelaySeconds: 3
timeoutSeconds: 5
args:
# command = "/kube-dns"

View File

@ -69,7 +69,7 @@ spec:
scheme: HTTP
# we poll on pod startup for the Kubernetes master service and
# only setup the /readiness HTTP server once that's available.
initialDelaySeconds: 30
initialDelaySeconds: 3
timeoutSeconds: 5
args:
# command = "/kube-dns"

View File

@ -69,7 +69,7 @@ spec:
scheme: HTTP
# we poll on pod startup for the Kubernetes master service and
# only setup the /readiness HTTP server once that's available.
initialDelaySeconds: 30
initialDelaySeconds: 3
timeoutSeconds: 5
args:
# command = "/kube-dns"

View File

@ -50,7 +50,7 @@ spec:
scheme: HTTP
# we poll on pod startup for the Kubernetes master service and
# only setup the /readiness HTTP server once that's available.
initialDelaySeconds: 30
initialDelaySeconds: 3
timeoutSeconds: 5
args:
# command = "/kube-dns"

View File

@ -66,7 +66,7 @@ spec:
scheme: HTTP
# we poll on pod startup for the Kubernetes master service and
# only setup the /readiness HTTP server once that's available.
initialDelaySeconds: 30
initialDelaySeconds: 3
timeoutSeconds: 5
args:
# command = "/kube-dns"