Skip to content

Commit b79539d

Browse files
authored
Merge pull request #34290 from kubernetes/dev-1.25
Official 1.25 Release Docs
2 parents 5706c58 + 67d8155 commit b79539d

File tree

161 files changed

+9268
-17541
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

161 files changed

+9268
-17541
lines changed

api-ref-assets/api/swagger.json

+6,475-14,959
Large diffs are not rendered by default.

api-ref-assets/config/fields.yaml

+11-12
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
fields:
55
- containers
66
- initContainers
7+
- ephemeralContainers
78
- imagePullSecrets
89
- enableServiceLinks
910
- os
@@ -20,7 +21,9 @@
2021
- runtimeClassName
2122
- priorityClassName
2223
- priority
24+
- preemptionPolicy
2325
- topologySpreadConstraints
26+
- overhead
2427
- name: Lifecycle
2528
fields:
2629
- restartPolicy
@@ -48,11 +51,9 @@
4851
- name: Security context
4952
fields:
5053
- securityContext
51-
- name: Beta level
54+
- name: Alpha level
5255
fields:
53-
- ephemeralContainers
54-
- preemptionPolicy
55-
- overhead
56+
- hostUsers
5657
- name: Deprecated
5758
fields:
5859
- serviceAccount
@@ -384,6 +385,9 @@
384385
fields:
385386
- selector
386387
- manualSelector
388+
- name: Alpha level
389+
fields:
390+
- podFailurePolicy
387391

388392
- definition: io.k8s.api.batch.v1.JobStatus
389393
field_categories:
@@ -396,7 +400,7 @@
396400
- completedIndexes
397401
- conditions
398402
- uncountedTerminatedPods
399-
- name: Alpha level
403+
- name: Beta level
400404
fields:
401405
- ready
402406

@@ -525,6 +529,7 @@
525529
- cephfs
526530
- cinder
527531
- csi
532+
- ephemeral
528533
- fc
529534
- flexVolume
530535
- flocker
@@ -539,9 +544,6 @@
539544
- scaleIO
540545
- storageos
541546
- vsphereVolume
542-
- name: Alpha level
543-
fields:
544-
- ephemeral
545547
- name: Deprecated
546548
fields:
547549
- gitRepo
@@ -591,7 +593,7 @@
591593
- volumeName
592594
- storageClassName
593595
- volumeMode
594-
- name: Alpha level
596+
- name: Beta level
595597
fields:
596598
- dataSource
597599
- dataSourceRef
@@ -714,6 +716,3 @@
714716
- resourceVersion
715717
- selfLink
716718
- uid
717-
- name: Ignored
718-
fields:
719-
- clusterName

api-ref-assets/config/toc.yaml

+3-3
Original file line numberDiff line numberDiff line change
@@ -179,9 +179,6 @@ parts:
179179
- name: PodDisruptionBudget
180180
group: policy
181181
version: v1
182-
- name: PodSecurityPolicy
183-
group: policy
184-
version: v1beta1
185182
- name: Extend Resources
186183
chapters:
187184
- name: CustomResourceDefinition
@@ -230,6 +227,9 @@ parts:
230227
- name: ComponentStatus
231228
group: ""
232229
version: v1
230+
- name: ClusterCIDR
231+
group: networking.k8s.io
232+
version: v1alpha1
233233
- name: Common Definitions
234234
chapters:
235235
- name: DeleteOptions

config.toml

+22-19
Original file line numberDiff line numberDiff line change
@@ -139,10 +139,10 @@ time_format_default = "January 02, 2006 at 3:04 PM PST"
139139
description = "Production-Grade Container Orchestration"
140140
showedit = true
141141

142-
latest = "v1.24"
142+
latest = "v1.25"
143143

144-
fullversion = "v1.24.0"
145-
version = "v1.24"
144+
fullversion = "v1.25.0"
145+
version = "v1.25"
146146
githubbranch = "main"
147147
docsbranch = "main"
148148
deprecated = false
@@ -169,6 +169,9 @@ algolia_docsearch = false
169169
# Enable Lunr.js offline search
170170
offlineSearch = false
171171

172+
# Official CVE feed bucket URL
173+
cveFeedBucket = "https://storage.googleapis.com/k8s-cve-feed/official-cve-feed.json"
174+
172175
[params.pushAssets]
173176
css = [
174177
"callouts",
@@ -179,40 +182,40 @@ js = [
179182
]
180183

181184
[[params.versions]]
182-
fullversion = "v1.24.0"
183-
version = "v1.24"
184-
githubbranch = "v1.24.0"
185+
fullversion = "v1.25.0"
186+
version = "v1.25"
187+
githubbranch = "v1.25.0"
185188
docsbranch = "main"
186189
url = "https://kubernetes.io"
187190

188191
[[params.versions]]
189-
fullversion = "v1.23.6"
192+
fullversion = "v1.24.2"
193+
version = "v1.24"
194+
githubbranch = "v1.24.2"
195+
docsbranch = "release-1.24"
196+
url = "https://v1-24.docs.kubernetes.io"
197+
198+
[[params.versions]]
199+
fullversion = "v1.23.8"
190200
version = "v1.23"
191-
githubbranch = "v1.23.6"
201+
githubbranch = "v1.23.8"
192202
docsbranch = "release-1.23"
193203
url = "https://v1-23.docs.kubernetes.io"
194204

195205
[[params.versions]]
196-
fullversion = "v1.22.9"
206+
fullversion = "v1.22.11"
197207
version = "v1.22"
198-
githubbranch = "v1.22.9"
208+
githubbranch = "v1.22.11"
199209
docsbranch = "release-1.22"
200210
url = "https://v1-22.docs.kubernetes.io"
201211

202212
[[params.versions]]
203-
fullversion = "v1.21.12"
213+
fullversion = "v1.21.14"
204214
version = "v1.21"
205-
githubbranch = "v1.21.12"
215+
githubbranch = "v1.21.14"
206216
docsbranch = "release-1.21"
207217
url = "https://v1-21.docs.kubernetes.io"
208218

209-
[[params.versions]]
210-
fullversion = "v1.20.15"
211-
version = "v1.20"
212-
githubbranch = "v1.20.15"
213-
docsbranch = "release-1.20"
214-
url = "https://v1-20.docs.kubernetes.io"
215-
216219
# User interface configuration
217220
[params.ui]
218221
# Enable to show the side bar menu in its compact state.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
---
2+
title: About cgroup v2
3+
content_type: concept
4+
weight: 50
5+
---
6+
7+
<!-- overview -->
8+
9+
On Linux, {{< glossary_tooltip text="control groups" term_id="cgroup" >}}
10+
constrain resources that are allocated to processes.
11+
12+
The {{< glossary_tooltip text="kubelet" term_id="kubelet" >}} and the
13+
underlying container runtime need to interface with cgroups to enforce
14+
[resource mangement for pods and containers](/docs/concepts/configuration/manage-resources-containers/) which
15+
includes cpu/memory requests and limits for containerized workloads.
16+
17+
There are two versions of cgroups in Linux: cgroup v1 and cgroup v2. cgroup v2 is
18+
the new generation of the `cgroup` API.
19+
20+
<!-- body -->
21+
22+
23+
## What is cgroup v2? {#cgroup-v2}
24+
{{< feature-state for_k8s_version="v1.25" state="stable" >}}
25+
26+
cgroup v2 is the next version of the Linux `cgroup` API. cgroup v2 provides a
27+
unified control system with enhanced resource management
28+
capabilities.
29+
30+
cgroup v2 offers several improvements over cgroup v1, such as the following:
31+
32+
- Single unified hierarchy design in API
33+
- Safer sub-tree delegation to containers
34+
- Newer features like [Pressure Stall Information](https://www.kernel.org/doc/html/latest/accounting/psi.html)
35+
- Enhanced resource allocation management and isolation across multiple resources
36+
- Unified accounting for different types of memory allocations (network memory, kernel memory, etc)
37+
- Accounting for non-immediate resource changes such as page cache write backs
38+
39+
Some Kubernetes features exclusively use cgroup v2 for enhanced resource
40+
management and isolation. For example, the
41+
[MemoryQoS](/blog/2021/11/26/qos-memory-resources/) feature improves memory QoS
42+
and relies on cgroup v2 primitives.
43+
44+
45+
## Using cgroup v2 {#using-cgroupv2}
46+
47+
The recommended way to use cgroup v2 is to use a Linux distribution that
48+
enables and uses cgroup v2 by default.
49+
50+
To check if your distribution uses cgroup v2, refer to [Identify cgroup version on Linux nodes](#check-cgroup-version).
51+
52+
### Requirements
53+
54+
cgroup v2 has the following requirements:
55+
56+
* OS distribution enables cgroup v2
57+
* Linux Kernel version is 5.8 or later
58+
* Container runtime supports cgroup v2. For example:
59+
* [containerd](https://containerd.io/) v1.4 and later
60+
* [cri-o](https://cri-o.io/) v1.20 and later
61+
* The kubelet and the container runtime are configured to use the [systemd cgroup driver](/docs/setup/production-environment/container-runtimes#systemd-cgroup-driver)
62+
63+
### Linux Distribution cgroup v2 support
64+
65+
For a list of Linux distributions that use cgroup v2, refer to the [cgroup v2 documentation](https://github.com/opencontainers/runc/blob/main/docs/cgroup-v2.md)
66+
67+
<!-- the list should be kept in sync with https://github.com/opencontainers/runc/blob/main/docs/cgroup-v2.md -->
68+
* Container Optimized OS (since M97)
69+
* Ubuntu (since 21.10, 22.04+ recommended)
70+
* Debian GNU/Linux (since Debian 11 bullseye)
71+
* Fedora (since 31)
72+
* Arch Linux (since April 2021)
73+
* RHEL and RHEL-like distributions (since 9)
74+
75+
To check if your distribution is using cgroup v2, refer to your distribution's
76+
documentation or follow the instructions in [Identify the cgroup version on Linux nodes](#check-cgroup-version).
77+
78+
You can also enable cgroup v2 manually on your Linux distribution by modifying
79+
the kernel cmdline boot arguments. If your distribution uses GRUB,
80+
`systemd.unified_cgroup_hierarchy=1` should be added in `GRUB_CMDLINE_LINUX`
81+
under `/etc/default/grub`, followed by `sudo update-grub`. However, the
82+
recommended approach is to use a distribution that already enables cgroup v2 by
83+
default.
84+
85+
### Migrating to cgroup v2 {#migrating-cgroupv2}
86+
87+
To migrate to cgroup v2, ensure that you meet the [requirements](#requirements), then upgrade
88+
to a kernel version that enables cgroup v2 by default.
89+
90+
The kubelet automatically detects that the OS is running on cgroup v2 and
91+
performs accordingly with no additional configuration required.
92+
93+
There should not be any noticeable difference in the user experience when
94+
switching to cgroup v2, unless users are accessing the cgroup file system
95+
directly, either on the node or from within the containers.
96+
97+
cgroup v2 uses a different API than cgroup v1, so if there are any
98+
applications that directly access the cgroup file system, they need to be
99+
updated to newer versions that support cgroup v2. For example:
100+
101+
* Some third-party monitoring and security agents may depend on the cgroup filesystem.
102+
Update these agents to versions that support cgroup v2.
103+
* If you run [cAdvisor](https://github.com/google/cadvisor) as a stand-alone
104+
DaemonSet for monitoring pods and containers, update it to v0.43.0 or later.
105+
* If you use JDK, prefer to use JDK 11.0.16 and later or JDK 15 and later, which [fully support cgroup v2](https://bugs.openjdk.org/browse/JDK-8230305).
106+
107+
## Identify the cgroup version on Linux Nodes {#check-cgroup-version}
108+
109+
The cgroup version depends on on the Linux distribution being used and the
110+
default cgroup version configured on the OS. To check which cgroup version your
111+
distribution uses, run the `stat -fc %T /sys/fs/cgroup/` command on
112+
the node:
113+
114+
```shell
115+
stat -fc %T /sys/fs/cgroup/
116+
```
117+
118+
For cgroup v2, the output is `cgroup2fs`.
119+
120+
For cgroup v1, the output is `tmpfs.`
121+
122+
## {{% heading "whatsnext" %}}
123+
124+
- Learn more about [cgroups](https://man7.org/linux/man-pages/man7/cgroups.7.html)
125+
- Learn more about [container runtime](/docs/concepts/architecture/cri)
126+
- Learn more about [cgroup drivers](/docs/setup/production-environment/container-runtimes#cgroup-drivers)

content/en/docs/concepts/cluster-administration/system-traces.md

+30-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ as the kube-apiserver is often a public endpoint.
6161
6262
To enable tracing, enable the `APIServerTracing`
6363
[feature gate](/docs/reference/command-line-tools-reference/feature-gates/)
64-
on the kube-apiserver. Also, provide the kube-apiserver with a tracing configration file
64+
on the kube-apiserver. Also, provide the kube-apiserver with a tracing configuration file
6565
with `--tracing-config-file=<path-to-config>`. This is an example config that records
6666
spans for 1 in 10000 requests, and uses the default OpenTelemetry endpoint:
6767

@@ -76,6 +76,35 @@ samplingRatePerMillion: 100
7676
For more information about the `TracingConfiguration` struct, see
7777
[API server config API (v1alpha1)](/docs/reference/config-api/apiserver-config.v1alpha1/#apiserver-k8s-io-v1alpha1-TracingConfiguration).
7878

79+
### kubelet traces
80+
81+
{{< feature-state for_k8s_version="v1.25" state="alpha" >}}
82+
83+
The kubelet CRI interface and authenticated http servers are instrumented to generate
84+
trace spans. As with the apiserver, the endpoint and sampling rate are configurable.
85+
Trace context propagation is also configured. A parent span's sampling decision is always respected.
86+
A provided tracing configuration sampling rate will apply to spans without a parent.
87+
Enabled without a configured endpoint, the default OpenTelemetry Collector reciever address of "localhost:4317" is set.
88+
89+
#### Enabling tracing in the kubelet
90+
91+
To enable tracing, enable the `KubeletTracing`
92+
[feature gate](/docs/reference/command-line-tools-reference/feature-gates/)
93+
on the kubelet. Also, provide the kubelet with a
94+
[tracing configuration](https://github.com/kubernetes/component-base/blob/release-1.25/tracing/api/v1/types.go).
95+
This is an example snippet of a kubelet config that records spans for 1 in 10000 requests, and uses the default OpenTelemetry endpoint:
96+
97+
```yaml
98+
apiVersion: kubelet.config.k8s.io/v1beta1
99+
kind: KubeletConfiguration
100+
featureGates:
101+
KubeletTracing: true
102+
tracing:
103+
# default value
104+
#endpoint: localhost:4317
105+
samplingRatePerMillion: 100
106+
```
107+
79108
## Stability
80109

81110
Tracing instrumentation is still under active development, and may change

content/en/docs/concepts/configuration/manage-resources-containers.md

+8-6
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ directly or from your monitoring tools.
236236
## Local ephemeral storage
237237

238238
<!-- feature gate LocalStorageCapacityIsolation -->
239-
{{< feature-state for_k8s_version="v1.10" state="beta" >}}
239+
{{< feature-state for_k8s_version="v1.25" state="stable" >}}
240240

241241
Nodes have local ephemeral storage, backed by
242242
locally-attached writeable devices or, sometimes, by RAM.
@@ -306,13 +306,15 @@ as you like.
306306
{{< /tabs >}}
307307

308308
The kubelet can measure how much local storage it is using. It does this provided
309-
that:
309+
that you have set up the node using one of the supported configurations for local
310+
ephemeral storage.
310311

311312
- the `LocalStorageCapacityIsolation`
312313
[feature gate](/docs/reference/command-line-tools-reference/feature-gates/)
313-
is enabled (the feature is on by default), and
314-
- you have set up the node using one of the supported configurations
315-
for local ephemeral storage.
314+
is enabled (the feature is on by default), and you have set up the node using one
315+
of the supported configurations for local ephemeral storage.
316+
- Quotas are faster and more accurate than directory scanning. The
317+
`LocalStorageCapacityIsolationFSQuotaMonitoring` [feature gate](/docs/reference/command-line-tools-reference/feature-gates/) is enabled (the feature is on by default),
316318

317319
If you have a different configuration, then the kubelet does not apply resource
318320
limits for ephemeral local storage.
@@ -446,7 +448,7 @@ that file but the kubelet does not categorize the space as in use.
446448
{{% /tab %}}
447449
{{% tab name="Filesystem project quota" %}}
448450

449-
{{< feature-state for_k8s_version="v1.15" state="alpha" >}}
451+
{{< feature-state for_k8s_version="v1.25" state="beta" >}}
450452

451453
Project quotas are an operating-system level feature for managing
452454
storage use on filesystems. With Kubernetes, you can enable project

0 commit comments

Comments
 (0)