Skip to content

Commit 14ff21d

Browse files
authored
Merge pull request #6601 from azylinski/api_call_latency-bump-ns-30s
Inc objective for read-only requests in "namespace" scope: from 5s to 30s
2 parents 0c661fc + e3c1c53 commit 14ff21d

File tree

2 files changed

+17
-9
lines changed

2 files changed

+17
-9
lines changed

sig-scalability/slos/api_call_latency.md

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,31 @@
55
| Status | SLI | SLO |
66
| --- | --- | --- |
77
| __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`) |
99

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
1111
from the moment when apiserver gets the request to last byte of response sent
1212
to the user.
1313

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
1515
and PATCH.
1616

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
1818
requests without `watch=true` option set. (Note that in Kubernetes internally
1919
it translates to both GET and LIST calls).
2020

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.
2533

2634
### User stories
2735
- As a user of vanilla Kubernetes, I want some guarantee how quickly I get the

sig-scalability/slos/slos.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ __TODO: Cluster churn should be moved to scalability thresholds.__
115115
| Status | SLI | SLO | User stories, test scenarios, ... |
116116
| --- | --- | --- | --- |
117117
| __Official__ | Latency of mutating 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<sup>[1](#footnote1)</sup> <= 1s | [Details](./api_call_latency.md) |
118-
| __Official__ | Latency of non-streaming read-only API calls for every (resource, scope 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<sup>[1](#footnote1)</sup> (a) <= 1s if `scope=resource` (b) <= 5s if `scope=namespace` (c) <= 30s if `scope=cluster` | [Details](./api_call_latency.md) |
118+
| __Official__ | Latency of non-streaming read-only API calls for every (resource, scope) 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<sup>[1](#footnote1)</sup> (a) <= 1s if `scope=resource` (b) <= 30s otherwise (if `scope=namespace` or `scope=cluster`) | [Details](./api_call_latency.md) |
119119
| __Official__ | Startup latency of schedulable stateless pods, excluding time to pull images and run init containers, measured from pod creation timestamp to when all its containers are reported as started and observed via watch, measured as 99th percentile over last 5 minutes | In default Kubernetes installation, 99th percentile per cluster-day<sup>[1](#footnote1)</sup> <= 5s | [Details](./pod_startup_latency.md) |
120120
| __WIP__ | Startup latency of schedulable stateful pods, excluding time to pull images, run init containers, provision volumes (in delayed binding mode) and unmount/detach volumes (from previous pod if needed), measured from pod creation timestamp to when all its containers are reported as started and observed via watch, measured as 99th percentile over last 5 minutes | In default Kubernetes installation, 99th percentile per cluster-day<sup>[1](#footnote1)</sup> <= X where X depends on storage provider | [Details](./pod_startup_latency.md) |
121121
| __WIP__ | Latency of programming in-cluster load balancing mechanism (e.g. iptables), measured from when service spec or list of its `Ready` pods change to when it is reflected in load balancing mechanism, measured as 99th percentile over last 5 minutes aggregated across all programmers | In default Kubernetes installation, 99th percentile per cluster-day<sup>[1](#footnote1)</sup> <= X | [Details](./network_programming_latency.md) |

0 commit comments

Comments
 (0)