Skip to content

Commit 8233fa2

Browse files
authored
Merge pull request #37810 from kubernetes/dev-1.26
Official 1.26 Release Docs
2 parents 31ace2f + 126f81b commit 8233fa2

File tree

62 files changed

+1923
-532
lines changed

Some content is hidden

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

62 files changed

+1923
-532
lines changed

config.toml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -138,10 +138,10 @@ time_format_default = "January 02, 2006 at 3:04 PM PST"
138138
description = "Production-Grade Container Orchestration"
139139
showedit = true
140140

141-
latest = "v1.25"
141+
latest = "v1.26"
142142

143-
fullversion = "v1.25.0"
144-
version = "v1.25"
143+
fullversion = "v1.26.0"
144+
version = "v1.26"
145145
githubbranch = "main"
146146
docsbranch = "main"
147147
deprecated = false
@@ -180,6 +180,13 @@ js = [
180180
"script"
181181
]
182182

183+
[[params.versions]]
184+
fullversion = "v1.26.0"
185+
version = "v1.26"
186+
githubbranch = "v1.26.0"
187+
docsbranch = "main"
188+
url = "https://kubernetes.io"
189+
183190
[[params.versions]]
184191
fullversion = "v1.25.0"
185192
version = "v1.25"
@@ -208,13 +215,6 @@ githubbranch = "v1.22.11"
208215
docsbranch = "release-1.22"
209216
url = "https://v1-22.docs.kubernetes.io"
210217

211-
[[params.versions]]
212-
fullversion = "v1.21.14"
213-
version = "v1.21"
214-
githubbranch = "v1.21.14"
215-
docsbranch = "release-1.21"
216-
url = "https://v1-21.docs.kubernetes.io"
217-
218218
# User interface configuration
219219
[params.ui]
220220
# Enable to show the side bar menu in its compact state.

content/en/blog/_posts/2022-05-03-kubernetes-release-1.24.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ Existing beta APIs and new versions of existing beta APIs will continue to be en
3232

3333
Release artifacts are [signed](https://github.com/kubernetes/enhancements/issues/3031) using [cosign](https://github.com/sigstore/cosign)
3434
signatures,
35-
and there is experimental support for [verifying image signatures](/docs/tasks/administer-cluster/verify-signed-images/).
35+
and there is experimental support for [verifying image signatures](/docs/tasks/administer-cluster/verify-signed-artifacts/).
3636
Signing and verification of release artifacts is part of [increasing software supply chain security for the Kubernetes release process](https://github.com/kubernetes/enhancements/issues/3027).
3737

3838
### OpenAPI v3
@@ -84,8 +84,7 @@ that enables the caller of a function to control all aspects of logging (output
8484
### Avoiding Collisions in IP allocation to Services
8585

8686
Kubernetes 1.24 introduces a new opt-in feature that allows you to
87-
[soft-reserve a range for static IP address assignments](/docs/concepts/services-networking/service/#service-ip-static-sub-range)
88-
to Services.
87+
soft-reserve a range for static IP address assignments to Services.
8988
With the manual enablement of this feature, the cluster will prefer automatic assignment from
9089
the pool of Service IP addresses, thereby reducing the risk of collision.
9190

content/en/blog/_posts/2022-08-18-kubernetes-1.24-release-interview.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ JAMES LAVERACK: This is really about encouraging the use of stable APIs. There w
203203

204204
JAMES LAVERACK: That's correct. There's no breaking changes in beta APIs other than the ones we've documented this release. It's only new things.
205205

206-
**CRAIG BOX: Now in this release, [the artifacts are signed](https://github.com/kubernetes/enhancements/issues/3031) using Cosign signatures, and there is [experimental support for verification of those signatures](https://kubernetes.io/docs/tasks/administer-cluster/verify-signed-images/). What needed to happen to make that process possible?**
206+
**CRAIG BOX: Now in this release, [the artifacts are signed](https://github.com/kubernetes/enhancements/issues/3031) using Cosign signatures, and there is [experimental support for verification of those signatures](https://kubernetes.io/docs/tasks/administer-cluster/verify-signed-artifacts/). What needed to happen to make that process possible?**
207207

208208
JAMES LAVERACK: This was a huge process from the other half of SIG Release. SIG Release has the release team, but it also has the release engineering team that handles the mechanics of actually pushing releases out. They have spent, and one of my friends over there, Adolfo, has spent a lot of time trying to bring us in line with [SLSA](https://slsa.dev/) compliance. I believe we're [looking now at Level 3 compliance](https://github.com/kubernetes/enhancements/issues/3027).
209209

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
---
2+
title: Leases
3+
content_type: concept
4+
weight: 30
5+
---
6+
7+
<!-- overview -->
8+
9+
Distrbuted systems often have a need for "leases", which provides a mechanism to lock shared resources and coordinate activity between nodes.
10+
In Kubernetes, the "lease" concept is represented by `Lease` objects in the `coordination.k8s.io` API group, which are used for system-critical
11+
capabilities like node heart beats and component-level leader election.
12+
13+
<!-- body -->
14+
15+
## Node Heart Beats
16+
17+
Kubernetes uses the Lease API to communicate kubelet node heart beats to the Kubernetes API server.
18+
For every `Node` , there is a `Lease` object with a matching name in the `kube-node-lease`
19+
namespace. Under the hood, every kubelet heart beat is an UPDATE request to this `Lease` object, updating
20+
the `spec.renewTime` field for the Lease. The Kubernetes control plane uses the time stamp of this field
21+
to determine the availability of this `Node`.
22+
23+
See [Node Lease objects](/docs/concepts/architecture/nodes/#heartbeats) for more details.
24+
25+
## Leader Election
26+
27+
Leases are also used in Kubernetes to ensure only one instance of a component is running at any given time.
28+
This is used by control plane components like `kube-controller-manager` and `kube-scheduler` in
29+
HA configurations, where only one instance of the component should be actively running while the other
30+
instances are on stand-by.
31+
32+
## API Server Identity
33+
34+
{{< feature-state for_k8s_version="v1.26" state="beta" >}}
35+
36+
Starting in Kubernetes v1.26, each `kube-apiserver` uses the Lease API to publish its identity to the
37+
rest of the system. While not particularly useful on its own, this provides a mechanism for clients to
38+
discover how many instances of `kube-apiserver` are operating the Kubernetes control plane.
39+
Existence of kube-apiserver leases enables future capabilities that may require coordination between
40+
each kube-apiserver.
41+
42+
You can inspect Leases owned by each kube-apiserver by checking for lease objects in the `kube-system` namespace
43+
with the name `kube-apiserver-<sha256-hash>`. Alternatively you can use the label selector `k8s.io/component=kube-apiserver`:
44+
45+
```shell
46+
$ kubectl -n kube-system get lease -l k8s.io/component=kube-apiserver
47+
NAME HOLDER AGE
48+
kube-apiserver-c4vwjftbvpc5os2vvzle4qg27a kube-apiserver-c4vwjftbvpc5os2vvzle4qg27a_9cbf54e5-1136-44bd-8f9a-1dcd15c346b4 5m33s
49+
kube-apiserver-dz2dqprdpsgnm756t5rnov7yka kube-apiserver-dz2dqprdpsgnm756t5rnov7yka_84f2a85d-37c1-4b14-b6b9-603e62e4896f 4m23s
50+
kube-apiserver-fyloo45sdenffw2ugwaz3likua kube-apiserver-fyloo45sdenffw2ugwaz3likua_c5ffa286-8a9a-45d4-91e7-61118ed58d2e 4m43s
51+
```
52+
53+
The SHA256 hash used in the lease name is based on the OS hostname as seen by kube-apiserver. Each kube-apiserver should be
54+
configured to use a hostname that is unique within the cluster. New instances of kube-apiserver that use the same hostname
55+
will take over existing Leases using a new holder identity, as opposed to instantiating new lease objects. You can check the
56+
hostname used by kube-apisever by checking the value of the `kubernetes.io/hostname` label:
57+
58+
```shell
59+
$ kubectl -n kube-system get lease kube-apiserver-c4vwjftbvpc5os2vvzle4qg27a -o yaml
60+
```
61+
62+
```yaml
63+
apiVersion: coordination.k8s.io/v1
64+
kind: Lease
65+
metadata:
66+
creationTimestamp: "2022-11-30T15:37:15Z"
67+
labels:
68+
k8s.io/component: kube-apiserver
69+
kubernetes.io/hostname: kind-control-plane
70+
name: kube-apiserver-c4vwjftbvpc5os2vvzle4qg27a
71+
namespace: kube-system
72+
resourceVersion: "18171"
73+
uid: d6c68901-4ec5-4385-b1ef-2d783738da6c
74+
spec:
75+
holderIdentity: kube-apiserver-c4vwjftbvpc5os2vvzle4qg27a_9cbf54e5-1136-44bd-8f9a-1dcd15c346b4
76+
leaseDurationSeconds: 3600
77+
renewTime: "2022-11-30T18:04:27.912073Z"
78+
```
79+
80+
Expired leases from kube-apiservers that no longer exist are garbage collected by new kube-apiservers after 1 hour.

content/en/docs/concepts/architecture/nodes.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -456,7 +456,7 @@ Message: Pod was terminated in response to imminent node shutdown.
456456

457457
## Non Graceful node shutdown {#non-graceful-node-shutdown}
458458

459-
{{< feature-state state="alpha" for_k8s_version="v1.24" >}}
459+
{{< feature-state state="beta" for_k8s_version="v1.26" >}}
460460

461461
A node shutdown action may not be detected by kubelet's Node Shutdown Manager,
462462
either because the command does not trigger the inhibitor locks mechanism used by

content/en/docs/concepts/containers/images.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,9 @@ Credentials can be provided in several ways:
167167
- Configuring Nodes to Authenticate to a Private Registry
168168
- all pods can read any configured private registries
169169
- requires node configuration by cluster administrator
170+
- Kubelet Credential Provider to dynamically fetch credentials for private registries
171+
- kubelet can be configured to use credential provider exec plugin
172+
for the respective private registry.
170173
- Pre-pulled Images
171174
- all pods can use any images cached on a node
172175
- requires root access to all nodes to set up
@@ -187,6 +190,18 @@ For an example of configuring a private container image registry, see the
187190
[Pull an Image from a Private Registry](/docs/tasks/configure-pod-container/pull-image-private-registry)
188191
task. That example uses a private registry in Docker Hub.
189192

193+
### Kubelet credential provider for authenticated image pulls {#kubelet-credential-provider}
194+
195+
{{< note >}}
196+
This approach is especially suitable when kubelet needs to fetch registry credentials dynamically.
197+
Most commonly used for registries provided by cloud providers where auth tokens are short-lived.
198+
{{< /note >}}
199+
200+
You can configure the kubelet to invoke a plugin binary to dynamically fetch registry credentials for a container image.
201+
This is the most robust and versatile way to fetch credentials for private registries, but also requires kubelet-level configuration to enable.
202+
203+
See [Configure a kubelet image credential provider](/docs/tasks/administer-cluster/kubelet-credential-provider/) for more details.
204+
190205
### Interpretation of config.json {#config-json}
191206

192207
The interpretation of `config.json` varies between the original Docker

content/en/docs/concepts/extend-kubernetes/compute-storage-net/device-plugins.md

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ weight: 20
88
---
99

1010
<!-- overview -->
11-
{{< feature-state for_k8s_version="v1.10" state="beta" >}}
11+
{{< feature-state for_k8s_version="v1.26" state="stable" >}}
1212

1313
Kubernetes provides a [device plugin framework](https://git.k8s.io/design-proposals-archive/resource-management/device-plugin.md)
1414
that you can use to advertise system hardware resources to the
@@ -145,8 +145,8 @@ The general workflow of a device plugin includes the following steps:
145145
### Handling kubelet restarts
146146

147147
A device plugin is expected to detect kubelet restarts and re-register itself with the new
148-
kubelet instance. In the current implementation, a new kubelet instance deletes all the existing Unix sockets
149-
under `/var/lib/kubelet/device-plugins` when it starts. A device plugin can monitor the deletion
148+
kubelet instance. A new kubelet instance deletes all the existing Unix sockets under
149+
`/var/lib/kubelet/device-plugins` when it starts. A device plugin can monitor the deletion
150150
of its Unix socket and re-register itself upon such an event.
151151

152152
## Device plugin deployment
@@ -165,16 +165,28 @@ Pod onto Nodes, to restart the daemon Pod after failure, and to help automate up
165165

166166
## API compatibility
167167

168-
Kubernetes device plugin support is in beta. The API may change before stabilization,
169-
in incompatible ways. As a project, Kubernetes recommends that device plugin developers:
168+
Previously, the versioning scheme required the Device Plugin's API version to match
169+
exactly the Kubelet's version. Since the graduation of this feature to Beta in v1.12
170+
this is no longer a hard requirement. The API is versioned and has been stable since
171+
Beta graduation of this feature. Because of this, kubelet upgrades should be seamless
172+
but there still may be changes in the API before stabilization making upgrades not
173+
guaranteed to be non-breaking.
170174

171-
* Watch for changes in future releases.
175+
{{< caution >}}
176+
Although the Device Manager component of Kubernetes is a generally available feature,
177+
the _device plugin API_ is not stable. For information on the device plugin API and
178+
version compatibility, read [Device Plugin API versions](/docs/reference/node/device-plugin-api-versions/).
179+
{{< caution >}}
180+
181+
As a project, Kubernetes recommends that device plugin developers:
182+
183+
* Watch for Device Plugin API changes in the future releases.
172184
* Support multiple versions of the device plugin API for backward/forward compatibility.
173185

174-
If you enable the DevicePlugins feature and run device plugins on nodes that need to be upgraded to
175-
a Kubernetes release with a newer device plugin API version, upgrade your device plugins
176-
to support both versions before upgrading these nodes. Taking that approach will
177-
ensure the continuous functioning of the device allocations during the upgrade.
186+
To run device plugins on nodes that need to be upgraded to a Kubernetes release with
187+
a newer device plugin API version, upgrade your device plugins to support both versions
188+
before upgrading these nodes. Taking that approach will ensure the continuous functioning
189+
of the device allocations during the upgrade.
178190

179191
## Monitoring device plugin resources
180192

content/en/docs/concepts/scheduling-eviction/_index.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,10 @@ of terminating one or more Pods on Nodes.
2626
* [Pod Topology Spread Constraints](/docs/concepts/scheduling-eviction/topology-spread-constraints/)
2727
* [Taints and Tolerations](/docs/concepts/scheduling-eviction/taint-and-toleration/)
2828
* [Scheduling Framework](/docs/concepts/scheduling-eviction/scheduling-framework)
29+
* [Dynamic Resource Allocation](/docs/concepts/scheduling-eviction/dynamic-resource-allocation)
2930
* [Scheduler Performance Tuning](/docs/concepts/scheduling-eviction/scheduler-perf-tuning/)
3031
* [Resource Bin Packing for Extended Resources](/docs/concepts/scheduling-eviction/resource-bin-packing/)
32+
* [Pod Scheduling Readiness](/docs/concepts/scheduling-eviction/pod-scheduling-readiness/)
3133

3234
## Pod Disruption
3335

0 commit comments

Comments
 (0)