|
5 | 5 | | Status | SLI | SLO |
|
6 | 6 | | --- | --- | --- |
|
7 | 7 | | __Official__ | Latency<sup>[1](#footnote1)</sup> of mutating<sup>[2](#footnote2)</sup> API calls for single objects for every (resource, verb) pair, measured as 99th percentile over last 5 minutes | In default Kubernetes installation, for every (resource, verb) pair, excluding virtual and aggregated resources and Custom Resource Definitions, 99th percentile per cluster-day <= 1s |
|
8 |
| -| __Official__ | Latency<sup>[1](#footnote1)</sup> of non-streaming read-only<sup>[3](#footnote3)</sup> API calls for every (resource, scope<sup>[4](#footnote4)</sup>) pair, measured as 99th percentile over last 5 minutes | In default Kubernetes installation, for every (resource, scope) pair, excluding virtual and aggregated resources and Custom Resource Definitions, 99th percentile per cluster-day (a) <= 1s if `scope=resource` (b) <= 5s if `scope=namespace` (c) <= 30s if `scope=cluster` | |
| 8 | +| __Official__ | Latency<sup>[1](#footnote1)</sup> of non-streaming read-only<sup>[3](#footnote3)</sup> API calls for every (resource, scope<sup>[4](#footnote4)</sup>) pair, measured as 99th percentile over last 5 minutes | In default Kubernetes installation, for every (resource, scope) pair, excluding virtual and aggregated resources and Custom Resource Definitions, 99th percentile per cluster-day: (a) <= 1s if `scope=resource` (b) <= 30s<sup>[5](#footnote5)</sup> otherwise (if `scope=namespace` or `scope=cluster`) | |
9 | 9 |
|
10 |
| -<a name="footnote1">\[1\]</a>By latency of API call in this doc we mean time |
| 10 | +<a name="footnote1">\[1\]</a> By latency of API call in this doc we mean time |
11 | 11 | from the moment when apiserver gets the request to last byte of response sent
|
12 | 12 | to the user.
|
13 | 13 |
|
14 |
| -<a name="footnote2">\[2\]</a>By mutating API calls we mean POST, PUT, DELETE |
| 14 | +<a name="footnote2">\[2\]</a> By mutating API calls we mean POST, PUT, DELETE |
15 | 15 | and PATCH.
|
16 | 16 |
|
17 |
| -<a name="footnote3">\[3\]</a>By non-streaming read-only API calls we mean GET |
| 17 | +<a name="footnote3">\[3\]</a> By non-streaming read-only API calls we mean GET |
18 | 18 | requests without `watch=true` option set. (Note that in Kubernetes internally
|
19 | 19 | it translates to both GET and LIST calls).
|
20 | 20 |
|
21 |
| -<a name="footnote4">\[4\]</a>A scope of a request can be either (a) `resource` |
22 |
| -if the request is about a single object, (b) `namespace` if it is about objects |
23 |
| -from a single namespace or (c) `cluster` if it spawns objects from multiple |
24 |
| -namespaces. |
| 21 | +<a name="footnote4">\[4\]</a> A scope of a request can be either |
| 22 | +- `resource` - if the request is about a single object |
| 23 | +- `namespace` - if it is about objects from a single namespace |
| 24 | +- `cluster` - if it spawns objects from multiple namespaces |
| 25 | + |
| 26 | +<a name="footnote5">\[5\]</a> Historically, the threshold for LISTs with |
| 27 | +`scope=namespace` was set to 5 seconds. However, the threshold was chosen when |
| 28 | +Kubernetes didn't support the scale it supports today and when individual |
| 29 | +namespace didn't contain tens of thousands (if not more) objects of a given |
| 30 | +type. We adjusted the limits to accommodate the usage patterns change, given |
| 31 | +that users are fine with listing tens of thousands of objects taking more than |
| 32 | +5 seconds. |
25 | 33 |
|
26 | 34 | ### User stories
|
27 | 35 | - As a user of vanilla Kubernetes, I want some guarantee how quickly I get the
|
|
0 commit comments