Commit Graph

89 Commits

Author SHA1 Message Date
yue9944882 dd68cdaa08 removes filter metrics test retries
Kubernetes-commit: 58cf6c0fb87a670165bd02128bb3b6db44e765e4
2020-11-05 11:41:34 +08:00
Adhityaa Chandrasekar 1ad5afe6a9 apiserver/filters test: fix data race and do not leak goroutines
Signed-off-by: Adhityaa Chandrasekar <adtac@google.com>

Kubernetes-commit: a2eb6d67ee43c799465ea0378c83dc3ac3a24246
2020-11-04 18:58:06 +00:00
staebler a541a1b602 do not allow inflight watermark histograms to fall too far behind
The MaxInFlight and PriorityAndFairness apiserver filters maintain
watermarks with histogram metrics that are observed when requests
are handled. When a request is received, the watermark observer
needs to fill out observations for the entire time period since the
last request was received. If it has been a long time since a
request has been received, then it can take an inordinate amount of
time to fill out the observations, to the extent that the request
may time out. To combat this, these changes will have the filters
fill out the observations on a 10-second interval, so that the
observations never fall too far behind.

This follows a similar approach taken in
9e89b92a92c02cdd2c70c0f52a30936e9c3309c7.

https://github.com/kubernetes/kubernetes/issues/95300

The Priority-and-Fairness and Max-in-Flight filters start goroutines to
handle some maintenance tasks on the watermarks for those filters. Once
started, these goroutines run forever. Instead, the goroutines should
have a lifetime tied to the lifetime of the apiserver.

These changes move the functionality for starting the goroutines to
a PostStartHook. The goroutines have been changed to accept a stop channel
and only run until the stop channel is closed.

Kubernetes-commit: 6c9b86646871f13a4431361310ba6a0785372053
2020-10-05 11:26:48 -04:00
bjrara 7498f28769 Add multi request test
Kubernetes-commit: 833ce487b9fab1650d5aaba2a8b295f8a90e07bd
2020-10-09 16:51:19 +08:00
bjrara bb16b18666 Fix issue in missing metrics of terminated requests
Kubernetes-commit: ce00f4ee545af8d7b7519045c3422893e19d43bc
2020-08-17 15:57:15 +08:00
yue9944882 0c7caae2de e2e cases for apf
Kubernetes-commit: c28036efa5fcafdbd9d10014c9197bef42d05eaf
2020-09-21 15:43:01 +08:00
Zhou Peng b07fe5362d [k8s.io/apiserver/pkg/server/filters]: fixup go vet warning
Signed-off-by: Zhou Peng <p@ctriple.cn>

Kubernetes-commit: 842cd8e315566388025f509edf563b20022922f6
2020-07-20 17:06:01 +08:00
chenjun.cj cdf4e75f4f skip TestClientReceivedGOAWAY
Kubernetes-commit: 3a4ae287d43046516e1686cb950907e981b96cae
2020-09-09 00:26:24 +08:00
Jordan Liggitt 338bb3eda2 Skip TestGOAWAYConcurrency
Kubernetes-commit: dbdd8c5a0c2b345a6b9f2c47055701390d42c3c8
2020-09-04 12:07:02 -04:00
knight42 9acb27b704 test(apiserver): deflake TestClientReceivedGOAWAY
protect `localAddr` from concurrent read and write

Signed-off-by: knight42 <anonymousknight96@gmail.com>

Kubernetes-commit: 1f235c858c39f77161d5b5e8272a7113bfca3143
2020-09-04 23:35:53 +08:00
chenjun.cj 599aa4d0a8 add more testcases for GOAWAY filter
Kubernetes-commit: 434fd2a976b8ecf8a85c9b00ef7c6ccf8f6f5ca3
2020-09-01 16:44:48 +08:00
Ken Sipe f5622f5df7 fix S1000 simplify ch switch cases
Signed-off-by: Ken Sipe <kensipe@gmail.com>

Kubernetes-commit: ba11567617aa8f00d9be01ce2551c49d153cdadf
2020-06-26 10:53:08 -05:00
Ken Sipe 0c18993949 fix S1008 simplify bool returns
Signed-off-by: Ken Sipe <kensipe@gmail.com>

Kubernetes-commit: b287287a3093e895a77ccf78053adffcaa7a67c9
2020-06-26 10:39:16 -05:00
bjrara 23237f73b9 Add missing termination metrics to priority-and-fairness handler
Kubernetes-commit: 7094964fe00e0b221e7db29f5980da8bc9166b30
2020-08-07 16:22:30 +08:00
Mike Spreitzer e28ab56bd4 Introduce more metrics on concurrency
Introduce min, average, and standard deviation for the number of
executing mutating and readOnly requests.

Introduce min, max, average, and standard deviation for the number
waiting and number waiting per priority level.

Later:

Revised to use a series of windows

Use three individuals instead of array of powers

Later:

Add coarse queue count metrics, removed windowed avg and stddev

Add metrics for number of queued mutating and readOnly requests,
to complement metrics for number executing.

Later:

Removed windowed average and standard deviation because consumers can
derive such from integrals of consumer's chosen window.

Also replaced "requestKind" Prometheus label with "request_kind".

Later:

Revised to focus on sampling

Make the clock intrinsic to a TimedObserver

... so that the clock can be read while holding the observer's lock;
otherwise, forward progress is not guaranteed (and violations were
observed in testing).

Bug fixes and histogram buckets revision

SetX1 to 1 when queue length limit is zero, beause dividing by zero is nasty.

Remove obsolete argument in gen_test.go.

Add a bucket boundary at 0 for sample-and-water-mark histograms, to
distinguish zeroes from non-zeros.

This includes adding Integrator test.

Simplified test code.

More pervasively used "ctlr" instead of "ctl" as abbreviation for
"controller".

Kubernetes-commit: 57ecea22296797a93b0157169db0ff2e477f58d0
2020-05-17 01:02:25 -04:00
Davanum Srinivas 5879417a28 switch over k/k to use klog v2
Signed-off-by: Davanum Srinivas <davanum@gmail.com>

Kubernetes-commit: 442a69c3bdf6fe8e525b05887e57d89db1e2f3a5
2020-04-17 15:25:06 -04:00
chenjun.cj e5c6ec44de add a new generic filter goaway
Kubernetes-commit: 81f46b64a35f3af096d50620dfcc78b003de8263
2020-02-28 05:27:25 +08:00
Mike Spreitzer 8ad2cc1389 Replaced uber atomic with sync atomic, removed unneded "blank import"
Kubernetes-commit: dbe84361440697af5c53d12209524aad9068c81a
2020-03-01 18:10:20 -05:00
yue9944882 f452a698b0 register metrics from comp-base
Kubernetes-commit: 11656478be93d4a9e54129ec35cd2b9558e901ac
2020-02-27 17:04:17 +08:00
yue9944882 1c89464ba6 adding response headers
Kubernetes-commit: da6f89217d357a6683ca4a7825c673d7c2af92f0
2020-02-17 16:06:13 +08:00
Mike Spreitzer 1c79014daa Added API Priority and Fairness filter and config consumer
Kubernetes-commit: 73614ddd4e42728a36c7ac6b7b20f27c8032cafb
2020-01-25 19:47:12 -05:00
danielqsj b31ce5f20e remove deprecated metrics of apiserver
Kubernetes-commit: 060756babbb6991cf9426c38be595d23e7124b4e
2019-04-12 16:15:13 +08:00
Bai Jianfei c8c7889d76 Count dropped requests except system previledged group requests.
Kubernetes-commit: b13e22482eac7a1964a8d1c900fe9e1908f67eee
2019-12-22 17:24:53 +08:00
Michal Fojtik 84578a6062 apiserver: add Retry-After header to response when apiserver is shutting down
Kubernetes-commit: a3c82e8ae313a6ed97a63a4435438aa067225527
2019-11-20 17:30:52 +01:00
Han Kang 00d376192a rename metric for apiserver request terminations and reword corresponding documentation
Change-Id: I47a9c7b10614afe85bb652fa61984f91848d6d65

Kubernetes-commit: f8f1def5f1d92a588f48ebc01293e142f8dd63fd
2019-10-21 13:26:31 -07:00
Han Kang 4a680138c0 Fix double counting issue for request metrics on timeout.
Currently we record request metrics during the normal request flow and
we also manually invoke `Record` in the timeout handler to record
timeouts. This means that we effectively double count whenever we
timeout. This PR renames the `Record` function to `RecordRequestError`
to more accurately reflect the intended side-effect of the function
call.

Change-Id: Ie37fd0c1e501bd525640a434433d364a5fd6dde2

Kubernetes-commit: 4c6e7247878477a1f2efc26df7f141258010374f
2019-10-02 15:04:29 -07:00
Daniel Smith 92d2515aca Don't leak a go routine on panic
Kubernetes-commit: a4ae7b9081f3ddedd0d588688215ddbe26274f75
2019-09-30 11:34:15 -07:00
Jordan Liggitt 223a2b92f0 Propagate and honor http.ErrAbortHandler
Kubernetes-commit: 43415294a72d13a6d685ec0e2ecb274fada7587c
2019-09-11 11:16:31 -04:00
Clayton Coleman 72566fea6c Replace HTTP compression with an inline handler
The previous HTTP compression implementation functioned as a filter, which
required it to deal with a number of special cases that complicated the
implementation.

Instead, when we write an API object to a response, handle only that one
case. This will allow a more limited implementation that does not impact
other code flows.

Also, to prevent excessive CPU use on small objects, compression is
disabled on responses smaller than 128Kb in size.

Kubernetes-commit: 4ed2b9875d0498b5c577095075bda341e96fcec2
2019-05-04 17:36:36 -04:00
Dr. Stefan Schimanski c4286f7b60 apiserver: store httplog in context
Kubernetes-commit: e848eaa566b750ad5e5fd26a64eecfc883f936f3
2019-06-14 13:09:13 +02:00
Haowei Cai 4ff581692b remove TrimSuffix and document buffer size
Kubernetes-commit: 0e61b77826f23cbf835002a9eef5722bb1cfdf53
2019-04-01 11:02:39 -07:00
Haowei Cai 278cabecf3 document the usage of errCh
Kubernetes-commit: 5809b6a4282f7ce58e0d815d9326289a8ee7ddb6
2019-03-28 16:55:03 -07:00
Justin SB bf98046128 Remove executable file permission from OWNERS files
Kubernetes-commit: dd19b923b7c26420af39fcf4eedfa213b236c8d3
2019-01-03 12:18:20 -05:00
Roy Lenferink 4c9524b9fb Updated OWNERS files to include link to docs
Kubernetes-commit: b43c04452f3b563473b5c2a765d4ac18cc0ff58f
2019-01-30 20:05:00 +01:00
danielqsj e0406b8675 Change endpoints metrics to conform guideline
Kubernetes-commit: 88c4b644005c5f674e9d03abae7e1cccda4fd23e
2018-12-26 22:29:13 +08:00
Davanum Srinivas e2884e1186 Revert "Generate Stack Traces for http response with status code zero"
Does not help with the bug investigation. the http server is designed to
panic when the http status code is `0`.

This reverts commit 72792d59f46f822cf360e797d886e582a6a2dc60.

Kubernetes-commit: 85ae15621af1d71caf5d0bac2299d17ec1020664
2019-01-04 15:26:07 -05:00
Han Kang e16a86073e add a content-type filter to apiserver filters to autoset nosniff
Kubernetes-commit: d0532bdb9ab40e06ee0702481f623d5054c8831a
2019-01-04 14:06:46 -08:00
Davanum Srinivas 2b1eeee742 Generate Stack Traces for http response with status code zero
When we spit out a http reponse with a `0` http status code we
should log a trace back so we can easily find where things went wrong.

Change-Id: Ic2aadec3a3de85fbdf64da66d6d12e3c631f409d

Kubernetes-commit: 72792d59f46f822cf360e797d886e582a6a2dc60
2019-01-03 16:52:36 -05:00
Dr. Stefan Schimanski b4ca200ede apiserver: add component label to request metrics
Kubernetes-commit: 7190b17e5a52a7c0673c2e8a30cbe95f2847a6df
2018-11-29 16:30:15 +01:00
Dr. Stefan Schimanski bb8c155568 apiserver: preserve stack trace in handler panic beyond timeout handler
Kubernetes-commit: 96fd0482f41ff34ef7d9b7de07ded38152a35141
2018-11-15 09:56:49 +01:00
Dr. Stefan Schimanski 0837aa9e3a apiserver: in timeout_test separate out handler
Kubernetes-commit: e43e5e2e4547c7cfb50190d67556352ef0aee9e8
2018-11-15 09:26:02 +01:00
Davanum Srinivas 2710b17b80 Move from glog to klog
- Move from the old github.com/golang/glog to k8s.io/klog
- klog as explicit InitFlags() so we add them as necessary
- we update the other repositories that we vendor that made a similar
change from glog to klog
  * github.com/kubernetes/repo-infra
  * k8s.io/gengo/
  * k8s.io/kube-openapi/
  * github.com/google/cadvisor
- Entirely remove all references to glog
- Fix some tests by explicit InitFlags in their init() methods

Change-Id: I92db545ff36fcec83afe98f550c9e630098b3135

Kubernetes-commit: 954996e231074dc7429f7be1256a579bedd8344c
2018-11-09 13:49:10 -05:00
Ibrahim AshShohail 47845b88c3 Update usages of http.ResponseWriter.WriteHeader to use http.Error
Signed-off-by: Ibrahim AshShohail <me@ibrasho.com>

Kubernetes-commit: 2fb3ba71f196031e9b36095d64c921cacc54f44e
2018-10-08 22:20:52 +03:00
Dr. Stefan Schimanski fdd6b9e860 apiserver: forward panic in WithTimeout filter
Kubernetes-commit: eec1b521117aa7271be3a3f0919c88caf5b73c54
2018-08-29 13:44:16 +02:00
liz fd93a41263 Remove some unnecessarily gendered pronouns in comments
Kubernetes-commit: ffeca161018fd6218532786876070a5fcfe96542
2018-05-25 17:48:17 -04:00
fisherxu f9c5e9f3a1 should return error when has no RequestInfo
Kubernetes-commit: 483ce1b1f3caf16cfda20f16bf65742fc43cff79
2018-05-08 21:44:17 +08:00
Jordan Liggitt 25758bf0f8 Remove request context mapper
Kubernetes-commit: 8ea88a5092c767fc3141512db924fd0435f7670e
2018-04-18 11:12:15 -04:00
Dr. Stefan Schimanski adb35656a1 apiserver: cancel context on timeout in WithTimeoutForNonLongRunningRequests
Kubernetes-commit: f3ba7f95585cdcce19579d757dadbf3c8a9f8e0b
2018-03-12 17:11:11 +01:00
Kubernetes Publisher 627fa76a8b sync: initially remove files BUILD */BUILD BUILD.bazel */BUILD.bazel 2018-03-15 09:38:17 +00:00
Jeff Grafton 1ab12b2dc8 Autogenerated: hack/update-bazel.sh
Kubernetes-commit: ef56a8d6bb3800ab7803713eafc4191e8202ad6e
2018-02-16 13:43:01 -08:00