mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 11:50:44 +00:00
allow configuring ReadIdelTimeout and PingTimeout via env var
This commit is contained in:
parent
ba7b1f7a89
commit
15648f1a7b
@ -140,6 +140,36 @@ func SetTransportDefaults(t *http.Transport) *http.Transport {
|
||||
return t
|
||||
}
|
||||
|
||||
func readIdleTimeoutSeconds() int {
|
||||
ret := 30
|
||||
// User can set the readIdleTimeout to 0 to disable the HTTP/2
|
||||
// connection health check.
|
||||
if s := os.Getenv("HTTP2_READ_IDLE_TIMEOUT_SECONDS"); len(s) > 0 {
|
||||
i, err := strconv.Atoi(s)
|
||||
if err != nil {
|
||||
klog.Warningf("Illegal HTTP2_READ_IDLE_TIMEOUT_SECONDS(%q): %v."+
|
||||
" Default value %d is used", s, err, ret)
|
||||
return ret
|
||||
}
|
||||
ret = i
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
||||
func pingTimeoutSeconds() int {
|
||||
ret := 15
|
||||
if s := os.Getenv("HTTP2_PING_TIMEOUT_SECONDS"); len(s) > 0 {
|
||||
i, err := strconv.Atoi(s)
|
||||
if err != nil {
|
||||
klog.Warningf("Illegal HTTP2_PING_TIMEOUT_SECONDS(%q): %v."+
|
||||
" Default value %d is used", s, err, ret)
|
||||
return ret
|
||||
}
|
||||
ret = i
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
||||
func configureHTTP2Transport(t *http.Transport) error {
|
||||
t2, err := http2.ConfigureTransports(t)
|
||||
if err != nil {
|
||||
@ -153,8 +183,8 @@ func configureHTTP2Transport(t *http.Transport) error {
|
||||
// by default, which caused
|
||||
// https://github.com/kubernetes/client-go/issues/374 and
|
||||
// https://github.com/kubernetes/kubernetes/issues/87615.
|
||||
t2.ReadIdleTimeout = 30 * time.Second
|
||||
t2.PingTimeout = 15 * time.Second
|
||||
t2.ReadIdleTimeout = time.Duration(readIdleTimeoutSeconds()) * time.Second
|
||||
t2.PingTimeout = time.Duration(pingTimeoutSeconds()) * time.Second
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -1071,3 +1071,39 @@ func TestIsProbableEOF(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func setEnv(key, value string) func() {
|
||||
originalValue := os.Getenv(key)
|
||||
os.Setenv(key, value)
|
||||
return func() {
|
||||
os.Setenv(key, originalValue)
|
||||
}
|
||||
}
|
||||
|
||||
func TestReadIdleTimeoutSeconds(t *testing.T) {
|
||||
reset := setEnv("HTTP2_READ_IDLE_TIMEOUT_SECONDS", "60")
|
||||
if e, a := 60, readIdleTimeoutSeconds(); e != a {
|
||||
t.Errorf("expected %d, got %d", e, a)
|
||||
}
|
||||
reset()
|
||||
|
||||
reset = setEnv("HTTP2_READ_IDLE_TIMEOUT_SECONDS", "illegal value")
|
||||
if e, a := 30, readIdleTimeoutSeconds(); e != a {
|
||||
t.Errorf("expected %d, got %d", e, a)
|
||||
}
|
||||
reset()
|
||||
}
|
||||
|
||||
func TestPingTimeoutSeconds(t *testing.T) {
|
||||
reset := setEnv("HTTP2_PING_TIMEOUT_SECONDS", "60")
|
||||
if e, a := 60, pingTimeoutSeconds(); e != a {
|
||||
t.Errorf("expected %d, got %d", e, a)
|
||||
}
|
||||
reset()
|
||||
|
||||
reset = setEnv("HTTP2_PING_TIMEOUT_SECONDS", "illegal value")
|
||||
if e, a := 15, pingTimeoutSeconds(); e != a {
|
||||
t.Errorf("expected %d, got %d", e, a)
|
||||
}
|
||||
reset()
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user