Skip to content

Commit b2d5046

Browse files
authored
Merge pull request #50589 from kubernetes/dev-1.33
Official 1.33 Release Docs
2 parents e6bd301 + 75b1f4a commit b2d5046

File tree

133 files changed

+2520
-756
lines changed

Some content is hidden

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

133 files changed

+2520
-756
lines changed

content/en/docs/concepts/cluster-administration/coordinated-leader-election.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ weight: 200
1010

1111
{{< feature-state feature_gate_name="CoordinatedLeaderElection" >}}
1212

13-
Kubernetes {{< skew currentVersion >}} includes an alpha feature that allows {{<
13+
Kubernetes {{< skew currentVersion >}} includes a beta feature that allows {{<
1414
glossary_tooltip text="control plane" term_id="control-plane" >}} components to
1515
deterministically select a leader via _coordinated leader election_.
1616
This is useful to satisfy Kubernetes version skew constraints during cluster upgrades.
@@ -23,15 +23,16 @@ version, followed by creation timestamp.
2323
Ensure that `CoordinatedLeaderElection` [feature
2424
gate](/docs/reference/command-line-tools-reference/feature-gates/) is enabled
2525
when you start the {{< glossary_tooltip text="API Server"
26-
term_id="kube-apiserver" >}}: and that the `coordination.k8s.io/v1alpha1` API group is
26+
term_id="kube-apiserver" >}}: and that the `coordination.k8s.io/v1beta1` API group is
2727
enabled.
2828

2929
This can be done by setting flags `--feature-gates="CoordinatedLeaderElection=true"` and
30-
`--runtime-config="coordination.k8s.io/v1alpha1=true"`.
30+
`--runtime-config="coordination.k8s.io/v1beta1=true"`.
3131

3232
## Component configuration
33+
3334
Provided that you have enabled the `CoordinatedLeaderElection` feature gate _and_
34-
have the `coordination.k8s.io/v1alpha1` API group enabled, compatible control plane
35+
have the `coordination.k8s.io/v1beta1` API group enabled, compatible control plane
3536
components automatically use the LeaseCandidate and Lease APIs to elect a leader
3637
as needed.
3738

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

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,36 @@ ClusterRole with the `get` verb for the `/metrics/resources` non-resource URL.
177177
On Kubernetes 1.21 you must use the `--show-hidden-metrics-for-version=1.20`
178178
flag to expose these alpha stability metrics.
179179

180+
### kubelet Pressure Stall Information (PSI) metrics
181+
182+
{{< feature-state for_k8s_version="v1.33" state="alpha" >}}
183+
184+
As an alpha feature, Kubernetes lets you configure kubelet to collect Linux kernel
185+
[Pressure Stall Information](https://docs.kernel.org/accounting/psi.html)
186+
(PSI) for CPU, memory and IO usage.
187+
The information is collected at node, pod and container level.
188+
The metrics are exposed at the `/metrics/cadvisor` endpoint with the following names:
189+
190+
```
191+
container_pressure_cpu_stalled_seconds_total
192+
container_pressure_cpu_waiting_seconds_total
193+
container_pressure_memory_stalled_seconds_total
194+
container_pressure_memory_waiting_seconds_total
195+
container_pressure_io_stalled_seconds_total
196+
container_pressure_io_waiting_seconds_total
197+
```
198+
199+
You must enable the `KubeletPSI` [feature gate](/docs/reference/command-line-tools-reference/feature-gates/)
200+
to use this feature. The information is also exposed in the
201+
[Summary API](/docs/reference/instrumentation/node-metrics#psi).
202+
203+
#### Requirements
204+
205+
Pressure Stall Information requires:
206+
207+
- [Linux kernel versions 4.20 or later](/docs/reference/node/kernel-version-requirements#requirements-psi).
208+
- [cgroup v2](/docs/concepts/architecture/cgroups)
209+
180210
## Disabling metrics
181211

182212
You can explicitly turn off metrics via command line flag `--disabled-metrics`. This may be
@@ -223,4 +253,4 @@ is encountered that is not allowed with respect to the allow-list constraints.
223253
* Read about the [Prometheus text format](https://github.com/prometheus/docs/blob/master/content/docs/instrumenting/exposition_formats.md#text-based-format)
224254
for metrics
225255
* See the list of [stable Kubernetes metrics](https://github.com/kubernetes/kubernetes/blob/master/test/instrumentation/testdata/stable-metrics-list.yaml)
226-
* Read about the [Kubernetes deprecation policy](/docs/reference/using-api/deprecation-policy/#deprecating-a-feature-or-behavior)
256+
* Read about the [Kubernetes deprecation policy](/docs/reference/using-api/deprecation-policy/#deprecating-a-feature-or-behavior)

content/en/docs/concepts/containers/container-lifecycle-hooks.md

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,14 @@ parameters are passed to the handler.
4747
A more detailed description of the termination behavior can be found in
4848
[Termination of Pods](/docs/concepts/workloads/pods/pod-lifecycle/#pod-termination).
4949

50+
`StopSignal`
51+
52+
The StopSignal lifecycle can be used to define a stop signal which would be sent to the container when it is
53+
stopped. If you set this, it overrides any `STOPSIGNAL` instruction defined within the container image.
54+
55+
A more detailed description of termination behaviour with custom stop signals can be found in
56+
[Stop Signals](/docs/concepts/workloads/pods/pod-lifecycle/#pod-termination-stop-signals).
57+
5058
### Hook handler implementations
5159

5260
Containers can access a hook by implementing and registering a handler for that hook.
@@ -56,17 +64,20 @@ There are three types of hook handlers that can be implemented for Containers:
5664
Resources consumed by the command are counted against the Container.
5765
* HTTP - Executes an HTTP request against a specific endpoint on the Container.
5866
* Sleep - Pauses the container for a specified duration.
59-
This is a beta-level feature default enabled by the `PodLifecycleSleepAction` [feature gate](/docs/reference/command-line-tools-reference/feature-gates/).
67+
This is a beta-level feature default enabled by the `PodLifecycleSleepAction`
68+
[feature gate](/docs/reference/command-line-tools-reference/feature-gates/).
6069

6170
{{< note >}}
62-
Enable the `PodLifecycleSleepActionAllowZero` feature gate if you want to set a sleep duration of zero seconds (effectively a no-op) for your Sleep lifecycle hooks.
71+
The beta level `PodLifecycleSleepActionAllowZero` feature gate which is enabled by default from v1.33.
72+
It allows you to set a sleep duration of zero seconds (effectively a no-op) for your Sleep lifecycle hooks.
6373
{{< /note >}}
6474

6575
### Hook handler execution
6676

6777
When a Container lifecycle management hook is called,
6878
the Kubernetes management system executes the handler according to the hook action,
69-
`httpGet`, `tcpSocket` ([deprecated](/docs/reference/generated/kubernetes-api/v1.31/#lifecyclehandler-v1-core)) and `sleep` are executed by the kubelet process, and `exec` is executed in the container.
79+
`httpGet`, `tcpSocket` ([deprecated](/docs/reference/generated/kubernetes-api/v1.31/#lifecyclehandler-v1-core))
80+
and `sleep` are executed by the kubelet process, and `exec` is executed in the container.
7081

7182
The `PostStart` hook handler call is initiated when a container is created,
7283
meaning the container ENTRYPOINT and the `PostStart` hook are triggered simultaneously.
@@ -110,7 +121,9 @@ The logs for a Hook handler are not exposed in Pod events.
110121
If a handler fails for some reason, it broadcasts an event.
111122
For `PostStart`, this is the `FailedPostStartHook` event,
112123
and for `PreStop`, this is the `FailedPreStopHook` event.
113-
To generate a failed `FailedPostStartHook` event yourself, modify the [lifecycle-events.yaml](https://raw.githubusercontent.com/kubernetes/website/main/content/en/examples/pods/lifecycle-events.yaml) file to change the postStart command to "badcommand" and apply it.
124+
To generate a failed `FailedPostStartHook` event yourself, modify the
125+
[lifecycle-events.yaml](https://k8s.io/examples/pods/lifecycle-events.yaml)
126+
file to change the postStart command to "badcommand" and apply it.
114127
Here is some example output of the resulting events you see from running `kubectl describe pod lifecycle-demo`:
115128

116129
```

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

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,10 @@ you must ensure all nodes in the cluster have the same pre-pulled images.
367367
This can be used to preload certain images for speed or as an alternative to authenticating to a
368368
private registry.
369369

370-
All pods will have read access to any pre-pulled images.
370+
{{< note >}}
371+
{{< feature-state feature_gate_name="KubeletEnsureSecretPulledImages" >}}
372+
Access to pre-pulled images may be authorized according to [image pull credential verification](#ensureimagepullcredentialverification)
373+
{{< /note >}}
371374

372375
### Specifying imagePullSecrets on a Pod
373376

@@ -380,6 +383,43 @@ Kubernetes supports specifying container image registry keys on a Pod.
380383
`imagePullSecrets` must all be in the same namespace as the Pod. The referenced
381384
Secrets must be of type `kubernetes.io/dockercfg` or `kubernetes.io/dockerconfigjson`.
382385

386+
#### Ensure Image Pull Credential Verification {#ensureimagepullcredentialverification}
387+
388+
{{< feature-state feature_gate_name="KubeletEnsureSecretPulledImages" >}}
389+
390+
If the `KubeletEnsureSecretPulledImages` feature gate is enabled, Kubernetes will validate
391+
image credentials for every image that requires credentials to be pulled,
392+
even if that image is already present on the node.
393+
This validation ensures that images in a pod request which have not been successfully pulled
394+
with the provided credentials must re-pull the images from the registry.
395+
Additionally, image pulls that re-use the same credentials
396+
which previously resulted in a successful image pull will not need to re-pull from the registry
397+
and are instead validated locally without accessing the registry
398+
(provided the image is available locally).
399+
This is controlled by the`imagePullCredentialsVerificationPolicy` field in the
400+
[Kubelet configuration](/docs/reference/config-api/kubelet-config.v1beta1#ImagePullCredentialsVerificationPolicy).
401+
402+
This configuration controls when image pull credentials must be verified if the
403+
image is already present on the node:
404+
405+
* `NeverVerify`: Mimics the behavior of having this feature gate disabled.
406+
If the image is present locally, image pull credentials are not verified.
407+
* `NeverVerifyPreloadedImages`: Images pulled outside the kubelet are not verified,
408+
but all other images will have their credentials verified. This is the default behavior.
409+
* `NeverVerifyAllowListedImages`: Images pulled outside the kubelet and mentioned within the
410+
`preloadedImagesVerificationAllowlist` specified in the kubelet config are not verified.
411+
* `AlwaysVerify`: All images will have their credentials verified
412+
before they can be used.
413+
414+
This verification applies to [pre-pulled images](#pre-pulled-images),
415+
images pulled using node-wide secrets, and images pulled using pod-level secrets.
416+
417+
{{< note >}}
418+
In the case of credential rotation, the credentials previously used to pull the image
419+
will continue to verify without the need to access the registry. New or rotated credentials
420+
will require the image to be re-pulled from the registry.
421+
{{< /note >}}
422+
383423
#### Creating a Secret with a Docker config
384424

385425
You need to know the username, registry password and client email address for authenticating

content/en/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ let you meet it.
4949
* To get the aggregator working in your environment, [configure the aggregation layer](/docs/tasks/extend-kubernetes/configure-aggregation-layer/).
5050
* Then, [setup an extension api-server](/docs/tasks/extend-kubernetes/setup-extension-api-server/) to work with the aggregation layer.
5151
* Read about [APIService](/docs/reference/kubernetes-api/cluster-resources/api-service-v1/) in the API reference
52+
* Learn about [Declarative Validation Concepts](/docs/reference/using-api/declarative-validation.md), an internal mechanism for defining validation rules that in the future will help support validation for extension API server development.
5253

5354
Alternatively: learn how to
5455
[extend the Kubernetes API using Custom Resource Definitions](/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/).

content/en/docs/concepts/policy/node-resource-managers.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -196,14 +196,14 @@ listed in alphabetical order:
196196
: Allocate virtual cores, sometimes called hardware threads, across different physical cores
197197
(available since Kubernetes v1.31)
198198

199-
`distribute-cpus-across-numa` (alpha, hidden by default)
199+
`distribute-cpus-across-numa` (beta, visible by default)
200200
: Spread CPUs across different NUMA domains, aiming for an even balance between the selected domains
201201
(available since Kubernetes v1.23)
202202

203-
`full-pcpus-only` (beta, visible by default)
204-
: Always allocate full physical cores (available since Kubernetes v1.22)
203+
`full-pcpus-only` (GA, visible by default)
204+
: Always allocate full physical cores (available since Kubernetes v1.22, GA since Kubernetes v1.33)
205205

206-
`strict-cpu-reservation` (alpha, hidden by default)
206+
`strict-cpu-reservation` (beta, visible by default)
207207
: Prevent all the pods regardless of their Quality of Service class to run on reserved CPUs
208208
(available since Kubernetes v1.32)
209209

0 commit comments

Comments
 (0)