Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
164 commits
Select commit Hold shift + click to select a range
d3efe11
Tracking commit for v1.34 docs
rayandas Apr 24, 2025
00fc123
mark PodDisruptionConditions as removed
carlory Jan 7, 2025
34bced4
mark DevicePluginCDIDevices as removed
carlory Jun 4, 2025
acb7d31
Merge main into dev-1.34 to keep in sync
Urvashi0109 Jun 11, 2025
9a05082
Merge pull request #51237 from Urvashi0109/merged-main-dev-1.34
k8s-ci-robot Jun 12, 2025
4b0b534
KEP-4633: Graduate to Stable.
vinayakankugoyal May 7, 2025
7527373
KEP-3015: PreferSameTrafficDistribution to Beta
danwinship Jun 5, 2025
c13b557
Update SeparateTaintEvictionController feature gate stages
carlory Jun 10, 2025
05d999b
Add docs for Structured Authn GA
aramase Jun 18, 2025
81beed7
Merge pull request #51290 from aramase/aramase/d/kep_3331_stable
k8s-ci-robot Jun 18, 2025
3f36d90
Merge main into dev-1.34 to keep in sync
Urvashi0109 Jun 24, 2025
e20b18f
Merge pull request #51365 from Urvashi0109/merged-main-dev-1.34
k8s-ci-robot Jun 24, 2025
06e2520
Merge main into dev-1.34 to keep in sync
rashansmith Jun 30, 2025
d232a77
Merge branch 'kubernetes:main' into merged-main-dev-1.34
rashansmith Jul 1, 2025
f14c309
Merge pull request #51454 from rashansmith/merged-main-dev-1.34
k8s-ci-robot Jul 1, 2025
9f26f83
Document KYAML
thockin Jul 1, 2025
552465d
kubeadm-init.md: update WaitForAllControlPlaneComponents
neolit123 Jun 28, 2025
ca04c5a
Merge pull request #51412 from neolit123/1.34-update-wait-for-all-cp-…
k8s-ci-robot Jul 2, 2025
48f8ce3
Merge pull request #51462 from thockin/kyaml
k8s-ci-robot Jul 2, 2025
4ffebe8
PodLifecycleSleepActionAllowZero to GA
sreeram-venkitesh Jul 3, 2025
ee2d076
Merge pull request #49315 from carlory/PodDisruptionConditions
k8s-ci-robot Jul 4, 2025
e2540b2
Update PodDisruptionConditions.md
carlory Jul 4, 2025
6c890c5
Document new `cache{A,Una}uthorizedRequests` field in `AuthorizationC…
rfranzke Jul 7, 2025
0135b1b
Add documentation for graduating the NodeLocalCRISocket to Beta
HirazawaUi Jul 4, 2025
acbc5e9
Update doc for 5080
cici37 Jul 7, 2025
543d58f
Merge remote-tracking branch 'upstream/main' into dev-1.34
yujen77300 Jul 8, 2025
8ad8c10
fix1
mochizuki875 Jul 8, 2025
6086d54
Merge pull request #51543 from yujen77300/merged-main-dev-1.34
k8s-ci-robot Jul 8, 2025
265ff1f
Update RecoverVolumeExpansionFailure to stable
gnufied Jul 9, 2025
2cde79b
Address comments
cici37 Jul 9, 2025
c3a34bb
Merge pull request #51515 from carlory/patch-1
k8s-ci-robot Jul 14, 2025
e7b2e4a
Merge pull request #50838 from vinayakankugoyal/anonGA
k8s-ci-robot Jul 14, 2025
f2d62b9
Merge pull request #50717 from rfranzke/dev-1.34
k8s-ci-robot Jul 15, 2025
d49bcfe
Merge main into dev-1.34 to keep in sync
Urvashi0109 Jul 16, 2025
207d496
Merge pull request #51624 from Urvashi0109/merged-main-dev-1.34
k8s-ci-robot Jul 16, 2025
cc64b6f
Merge pull request #51535 from cici37/5080
k8s-ci-robot Jul 17, 2025
31f23f1
KEP-4601: promote to stable
liggitt Jul 1, 2025
2c52e65
Merge pull request #51503 from HirazawaUi/add-doc-4654
k8s-ci-robot Jul 17, 2025
ab5c2db
Merge pull request #51461 from liggitt/4601-ga
k8s-ci-robot Jul 17, 2025
6a1b6c1
[KEP-3960] - update docs for GA
AxeZhan Oct 12, 2024
f3a6e8e
docs: Add userns changes in 1.34
rata Jul 1, 2025
9a93a45
Merge remote-tracking branch 'origin/main' into sync-main-into-dev-1.34
ryan-su-12 Jul 22, 2025
eff09ab
update WatchList to true for 1.34
p0lyn0mial Jul 23, 2025
35b1ebe
Merge pull request #51678 from ryan-su-12/sync-main-into-dev-1.34-v2
k8s-ci-robot Jul 23, 2025
83f0fd8
update apiserver tracing to GA
dashpole Jul 3, 2025
bf23287
[KEP-3939] - Promote JobPodReplacementPolicy to GA
dejanzele Jun 29, 2025
bfcdaac
Merge pull request #51680 from p0lyn0mial/dev-1.34-enable-watchlist
k8s-ci-robot Jul 24, 2025
5c1c6a3
Merge pull request #51425 from dejanzele/kep-3939/promote-to-ga
k8s-ci-robot Jul 28, 2025
c47e4a8
KEP-5229: Add SchedulerAsyncAPICalls feature gate docs
macsko Jul 2, 2025
f8d1342
KEP-2831: kubelet tracing GA in 1.34
ffromani Jul 2, 2025
1b64e8b
kep-5278: Use NominatedNodeName to express the expected pod placement
sanposhiho Jul 5, 2025
8255f3f
Merge pull request #51509 from dashpole/aiserver_tracing_ga
k8s-ci-robot Jul 28, 2025
36162b1
DRA: core update for 1.34
pohly Jul 2, 2025
68225ef
Promote RelaxedEnvironmentVariableValidation Feature gate to GA
HirazawaUi Jun 28, 2025
134e80c
Promote kuberc to beta
soltysh Jun 23, 2025
fd168a0
Merge main into dev-1.34 to keep in sync
rashansmith Jul 29, 2025
6694608
KEP-740: Update externaljwt docs for beta
liggitt Jul 29, 2025
a618b01
Add docs for PSAT for Kubelet Image Credential Providers beta
aramase Jun 25, 2025
c6c320d
KEP-740: move grpc docs into website
liggitt Jul 29, 2025
e087053
Merge pull request #51725 from liggitt/externaljwt-beta
k8s-ci-robot Jul 29, 2025
406db73
WinDSR to stable updates
marosset Jul 3, 2025
a87b15b
WindowsGracefulNodeShutdown beta for v1.34 updates
marosset Jul 3, 2025
ab12c02
ippr: document memory limit decrease support for 1.34
natasha41575 Jul 29, 2025
08fa7a9
ippr: document prioritized resizes for 1.34
natasha41575 Jul 29, 2025
9910b9b
Add docs for egress selector support in JWT authenticator
aramase Jul 29, 2025
6611158
DRAAdminAccess: updates for v1.34
ritazh Jul 2, 2025
6218cef
docs(DRA): Document device health monitoring in PodStatus
Jpsassine Jul 29, 2025
fe88474
Doc: Kubelet PSI metrics feature graduates to Beta
roycaihw Jul 29, 2025
1a1d3f0
Doc: Enhance PSI metrics docs with practical usage examples and expla…
roycaihw Jul 29, 2025
61b4928
Merge pull request #51483 from pohly/dra-1.34
k8s-ci-robot Jul 30, 2025
bf3dc8b
Merge pull request #51724 from rashansmith/merged-main-dev-1.34
k8s-ci-robot Jul 30, 2025
ed3d39a
node: graduate cpumanager prefer-align-cpus-by-uncorecache to beta
ffromani Jul 2, 2025
e2c0fe1
KEP-4247: Graduate SchedulerQueueingHints feature to GA
macsko Jul 4, 2025
eaf7596
Merge pull request #51477 from ffromani/kubelet-tracing-ga-1.34
k8s-ci-robot Jul 31, 2025
5c7df0c
review feedback
aramase Jul 31, 2025
e694d6e
[KEP-5004] DRA Extended resource documentation
yliaog Jul 26, 2025
d70a520
Merge pull request #51382 from aramase/aramase/d/kep_4412_beta_docs
k8s-ci-robot Aug 1, 2025
276116d
Merge pull request #51351 from soltysh/kuberc_beta
k8s-ci-robot Aug 1, 2025
ebc53a5
update
sanposhiho Aug 2, 2025
676da3a
PrioritizedList to beta docs
mortent Jul 29, 2025
4ddbd18
KEP-5007: Update the DRA doc for DRADeviceBindingConditions
KobayashiD27 Aug 3, 2025
2f8244a
[KEP-5075] DRAConsumableCapacity documentation
sunya-ch Jul 2, 2025
fc094d4
Document KEP-5116
serathius Jul 1, 2025
db33d6e
PodObservedGenerationTracking promoted to beta in 1.34
natasha41575 Aug 4, 2025
e869592
Update docs for Beta MutableCSINodeAllocatableCount
torredil Aug 4, 2025
2d15dba
KEP-3751 VolumeAttributesClass GA in 1.34 Doc Update
sunnylovestiramisu Jul 29, 2025
b4175eb
Documentation update for pod level resources in 1.34
ndixita Jul 3, 2025
c9c93e1
Merge pull request #51494 from ndixita/pod-resources-beta
k8s-ci-robot Aug 4, 2025
2c0d450
Merge pull request #51731 from Jpsassine/dra-health-docs
k8s-ci-robot Aug 4, 2025
428771e
node: dra: podresources: KEP-3695 Beta in 1.34
ffromani Jul 2, 2025
99e4ae4
Merge pull request #51470 from ritazh/5018-beta
k8s-ci-robot Aug 5, 2025
450bed9
Merge pull request #51514 from macsko/graduate_schedulerqueueinghints…
k8s-ci-robot Aug 5, 2025
4cb930c
Update docs for recover from expansion failure feature
gnufied Aug 5, 2025
f83015e
Add documentation for the EnvFiles Feature Gate
HirazawaUi Jun 28, 2025
17d75d4
Merge pull request #51726 from sunnylovestiramisu/vac-doc
k8s-ci-robot Aug 5, 2025
50c9876
4033: update to GA
haircommander Jun 30, 2025
8e40772
Move "Understand PSI Metrics" into a new reference doc
roycaihw Aug 4, 2025
e670d50
Clarify PSI kernel config requirements
roycaihw Aug 5, 2025
c6a82b4
Merge pull request #51728 from aramase/aramase/d/authn_egress_selector
k8s-ci-robot Aug 5, 2025
5a0ebb3
Add documentation for container restart rules
yuanwang04 Jul 1, 2025
df2a445
Merge pull request #51219 from carlory/SeparateTaintEvictionController
k8s-ci-robot Aug 6, 2025
f453b00
Tweak wording
lmktfy Aug 6, 2025
f6c3312
Merge pull request #51710 from yliaog/main
k8s-ci-robot Aug 6, 2025
e3b64b1
Update the description
sanposhiho Aug 6, 2025
5d1bdc7
Merge pull request #51446 from haircommander/cgroup-cri-ga
k8s-ci-robot Aug 6, 2025
66f381e
Merge pull request #51119 from mochizuki875/design_change_of_podtopol…
k8s-ci-robot Aug 6, 2025
57787a3
Merge pull request #51473 from macsko/add_schedulerasyncapicalls_feat…
k8s-ci-robot Aug 6, 2025
d76816c
Merge pull request #51476 from ffromani/dra-podresources-beta-1.34
k8s-ci-robot Aug 6, 2025
59d333c
Merge pull request #51479 from sunya-ch/KEP-5075-PR
k8s-ci-robot Aug 6, 2025
c41eebb
Merge pull request #49814 from KobayashiD27/dev-1.33-dra-device-bindi…
k8s-ci-robot Aug 6, 2025
5827f58
Add docs for blocking host field using PSA
tssurya Jul 3, 2025
27c3ac2
Merge pull request #51185 from danwinship/kep-3015-to-beta
k8s-ci-robot Aug 6, 2025
9e0fdab
Add documentation for the HostnameOverride Feature Gate
HirazawaUi Jul 29, 2025
6483703
Addressed comments
mortent Aug 6, 2025
8185491
Update documentation for KEP-4988 Beta
serathius Jul 3, 2025
4ed6a11
Merge pull request #51459 from rata/userns-134
k8s-ci-robot Aug 6, 2025
f6f008a
Merge pull request #51415 from HirazawaUi/add-doc-3721
k8s-ci-robot Aug 6, 2025
722327f
Merge pull request #51474 from ffromani/kep-4800-1.34
k8s-ci-robot Aug 6, 2025
8aca96e
Merge pull request #51498 from tssurya/psa-host-field-docs
k8s-ci-robot Aug 6, 2025
82cf07f
Optimize envfile documentation
HirazawaUi Aug 6, 2025
f41e7ee
Merge pull request #51501 from serathius/kep-4988-beta
k8s-ci-robot Aug 6, 2025
308d8de
Merge pull request #51523 from sanposhiho/new-nnn
k8s-ci-robot Aug 6, 2025
df57a30
Merge pull request #51532 from natasha41575/podobservedgen
k8s-ci-robot Aug 6, 2025
35888c3
Merge pull request #51397 from torredil/update-docs9123123
k8s-ci-robot Aug 6, 2025
c520335
Merge pull request #51505 from marosset/win-dsr-overlay-stable-1.34
k8s-ci-robot Aug 6, 2025
5b98dc4
Merge pull request #51507 from marosset/win-graceful-shutdown-stable-…
k8s-ci-robot Aug 6, 2025
2612fd5
ippr: document how to leverage observedGeneration to understand the s…
natasha41575 Jul 29, 2025
db5f95c
Merge pull request #51541 from roycaihw/4205-doc
k8s-ci-robot Aug 6, 2025
3a894e1
removed backtick around DeviceClass
yliaog Aug 6, 2025
364065c
Merge pull request #51567 from gnufied/update-recover-volume-expansio…
k8s-ci-robot Aug 6, 2025
4680155
Merge pull request #51815 from yliaog/dra
k8s-ci-robot Aug 6, 2025
a0fb9cc
nit-fix: Add empty value for host field in probes PSA
tssurya Aug 6, 2025
41b96ba
Merge pull request #51457 from serathius/kep-5116-ga
k8s-ci-robot Aug 6, 2025
677b491
Merge pull request #51729 from natasha41575/ippr-docs
k8s-ci-robot Aug 6, 2025
75eac5d
Merge pull request #51816 from tssurya/fix-review-comment-psa-host-pr…
k8s-ci-robot Aug 6, 2025
a29bca9
Merge pull request #51467 from yuanwang04/container_restart_rules
k8s-ci-robot Aug 6, 2025
639ee1f
Merge pull request #51416 from HirazawaUi/add-doc-4369
k8s-ci-robot Aug 6, 2025
36a7865
Merge pull request #51490 from sreeram-venkitesh/kep-4818-docs-changes
k8s-ci-robot Aug 6, 2025
4cc63cf
Merge pull request #51414 from HirazawaUi/add-doc-4762
k8s-ci-robot Aug 6, 2025
225f8e4
Merge pull request #51401 from AxeZhan/ga3960
k8s-ci-robot Aug 6, 2025
4ac5340
Merge pull request #51482 from mortent/PrioritizedListToBeta
k8s-ci-robot Aug 6, 2025
f72ccf8
Pod Certificates: Narrow documentation of new feature
ahmedtd Aug 6, 2025
8451df9
Merge pull request #51817 from ahmedtd/podcertificates-narrow
k8s-ci-robot Aug 6, 2025
d155de7
Merge pull request #51814 from HirazawaUi/optimize-envfile-docs
k8s-ci-robot Aug 6, 2025
31d5ae3
Merge pull request #51169 from carlory/DevicePluginCDIDevices
k8s-ci-robot Aug 6, 2025
e65e744
Documentation for KEP-3962
michellengnx Aug 6, 2025
65f7e8c
Merge remote-tracking branch 'upstream/main' into ryan-sync-main-into…
ryan-su-12 Aug 6, 2025
5b222e1
Merge pull request #51819 from michellengnx/KEP-3962
k8s-ci-robot Aug 7, 2025
1e994aa
Follow up PR 51414 comments
HirazawaUi Aug 7, 2025
70f3bf8
Merge pull request #51823 from HirazawaUi/follow-51414
k8s-ci-robot Aug 7, 2025
d88df50
Updating WindowsGraceNodeShutdown.md for v1.34
marosset Aug 8, 2025
b79bbd3
Merge pull request #51820 from ryan-su-12/ryan-sync-main-into-dev-1.34
k8s-ci-robot Aug 12, 2025
a3f59ad
Merge main into dev-1.34 to keep in sync
rashansmith Aug 12, 2025
48e31c3
Fix PodCertificateRequests feature gate metadata
lmktfy Aug 14, 2025
62907be
[KEP-5075] remove exactly.name field in example
sunya-ch Aug 8, 2025
16ff571
Merge pull request #51897 from rashansmith/merged-main-dev-1.34
k8s-ci-robot Aug 17, 2025
c7c7c83
Fix name of feature gate file
lmktfy Aug 17, 2025
1686437
Merge pull request #51915 from lmktfy/20250814_fix_pcr_feature_gate
k8s-ci-robot Aug 18, 2025
c41a76e
Merge pull request #51919 from sunya-ch/kep-5075-pr-fix
k8s-ci-robot Aug 19, 2025
ded362d
Merge pull request #51847 from marosset/1.34-win-graceful-shutdown-fg…
k8s-ci-robot Aug 19, 2025
47c5fa7
Updating graceful node shutdown page to not assume linux
marosset Aug 19, 2025
5c06370
Merge pull request #51967 from marosset/1.34-graceful-shutdown-updates
k8s-ci-robot Aug 19, 2025
e220848
Merge main into dev-1.34 to keep in sync
michellengnx Aug 21, 2025
7179839
Merge pull request #51988 from michellengnx/merged-main-dev-1.34
k8s-ci-robot Aug 21, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 43 additions & 29 deletions content/en/docs/concepts/cluster-administration/node-shutdown.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,30 +16,66 @@ either **graceful** or **non-graceful**.

## Graceful node shutdown {#graceful-node-shutdown}

{{< feature-state feature_gate_name="GracefulNodeShutdown" >}}

The kubelet attempts to detect node system shutdown and terminates pods running on the node.

kubelet ensures that pods follow the normal
Kubelet ensures that pods follow the normal
[pod termination process](/docs/concepts/workloads/pods/pod-lifecycle/#pod-termination)
during the node shutdown. During node shutdown, the kubelet does not accept new
Pods (even if those Pods are already bound to the node).

### Enabling graceful node shutdown

{{< tabs name="graceful_shutdown_os" >}}
{{% tab name="Linux" %}}
{{< feature-state feature_gate_name="GracefulNodeShutdown" >}}

On Linux, the graceful node shutdown feature is controlled with the `GracefulNodeShutdown`
[feature gate](/docs/reference/command-line-tools-reference/feature-gates/) which is
enabled by default in 1.21.

{{< note >}}
The graceful node shutdown feature depends on systemd since it takes advantage of
[systemd inhibitor locks](https://www.freedesktop.org/wiki/Software/systemd/inhibit/) to
delay the node shutdown with a given duration.
{{</ note >}}
{{% /tab %}}

Graceful node shutdown is controlled with the `GracefulNodeShutdown`
[feature gate](/docs/reference/command-line-tools-reference/feature-gates/) which is
enabled by default in 1.21.
{{% tab name="Windows" %}}
{{< feature-state feature_gate_name="WindowsGracefulNodeShutdown" >}}

On Windows, the graceful node shutdown feature is controlled with the `WindowsGracefulNodeShutdown`
[feature gate](/docs/reference/command-line-tools-reference/feature-gates/)
which is introduced in 1.32 as an alpha feature. In Kubernetes 1.34 the feature is Beta
and is enabled by default.

{{< note >}}
The Windows graceful node shutdown feature depends on kubelet running as a Windows service,
it will then have a registered [service control handler](https://learn.microsoft.com/en-us/windows/win32/services/service-control-handler-function)
to delay the preshutdown event with a given duration.
{{</ note >}}

Windows graceful node shutdown can not be cancelled.

If kubelet is not running as a Windows service, it will not be able to set and monitor
the [Preshutdown](https://learn.microsoft.com/en-us/windows/win32/api/winsvc/ns-winsvc-service_preshutdown_info) event,
the node will have to go through the [Non-Graceful Node Shutdown](#non-graceful-node-shutdown) procedure mentioned above.

In the case where the Windows graceful node shutdown feature is enabled, but the kubelet is not
running as a Windows service, the kubelet will continue running instead of failing. However,
it will log an error indicating that it needs to be run as a Windows service.
{{% /tab %}}

{{< /tabs >}}

### Configuring graceful node shutdown

Note that by default, both configuration options described below,
`shutdownGracePeriod` and `shutdownGracePeriodCriticalPods`, are set to zero,
thus not activating the graceful node shutdown functionality.
To activate the feature, both options should be configured appropriately and
set to non-zero values.

Once systemd detects or is notified of a node shutdown, the kubelet sets a `NotReady` condition on
Once the kubelet is notified of a node shutdown, it sets a `NotReady` condition on
the Node, with the `reason` set to `"node is shutting down"`. The kube-scheduler honors this condition
and does not schedule any Pods onto the affected node; other third-party schedulers are
expected to follow the same logic. This means that new Pods won't be scheduled onto that node
Expand Down Expand Up @@ -273,28 +309,6 @@ via the [Non-Graceful Node Shutdown](#non-graceful-node-shutdown) procedure ment

{{< /note >}}

## Windows Graceful node shutdown {#windows-graceful-node-shutdown}

{{< feature-state feature_gate_name="WindowsGracefulNodeShutdown" >}}

The Windows graceful node shutdown feature depends on kubelet running as a Windows service,
it will then have a registered [service control handler](https://learn.microsoft.com/en-us/windows/win32/services/service-control-handler-function)
to delay the preshutdown event with a given duration.

Windows graceful node shutdown is controlled with the `WindowsGracefulNodeShutdown`
[feature gate](/docs/reference/command-line-tools-reference/feature-gates/)
which is introduced in 1.32 as an alpha feature.

Windows graceful node shutdown can not be cancelled.

If kubelet is not running as a Windows service, it will not be able to set and monitor
the [Preshutdown](https://learn.microsoft.com/en-us/windows/win32/api/winsvc/ns-winsvc-service_preshutdown_info) event,
the node will have to go through the [Non-Graceful Node Shutdown](#non-graceful-node-shutdown) procedure mentioned above.

In the case where the Windows graceful node shutdown feature is enabled, but the kubelet is not
running as a Windows service, the kubelet will continue running instead of failing. However,
it will log an error indicating that it needs to be run as a Windows service.

## {{% heading "whatsnext" %}}

Learn more about the following:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -179,11 +179,11 @@ flag to expose these alpha stability metrics.

### kubelet Pressure Stall Information (PSI) metrics

{{< feature-state for_k8s_version="v1.33" state="alpha" >}}
{{< feature-state for_k8s_version="v1.34" state="beta" >}}

As an alpha feature, Kubernetes lets you configure kubelet to collect Linux kernel
As a beta feature, Kubernetes lets you configure kubelet to collect Linux kernel
[Pressure Stall Information](https://docs.kernel.org/accounting/psi.html)
(PSI) for CPU, memory and IO usage.
(PSI) for CPU, memory and I/O usage.
The information is collected at node, pod and container level.
The metrics are exposed at the `/metrics/cadvisor` endpoint with the following names:

Expand All @@ -196,10 +196,11 @@ container_pressure_io_stalled_seconds_total
container_pressure_io_waiting_seconds_total
```

You must enable the `KubeletPSI` [feature gate](/docs/reference/command-line-tools-reference/feature-gates/)
to use this feature. The information is also exposed in the
This feature is enabled by default, by setting the `KubeletPSI` [feature gate](/docs/reference/command-line-tools-reference/feature-gates/). The information is also exposed in the
[Summary API](/docs/reference/instrumentation/node-metrics#psi).

You can learn how to interpret the PSI metrics in [Understand PSI Metrics](/docs/reference/instrumentation/understand-psi-metrics/).

#### Requirements

Pressure Stall Information requires:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,15 +78,15 @@ with `--tracing-config-file=<path-to-config>`. This is an example config that re
spans for 1 in 10000 requests, and uses the default OpenTelemetry endpoint:

```yaml
apiVersion: apiserver.config.k8s.io/v1beta1
apiVersion: apiserver.config.k8s.io/v1
kind: TracingConfiguration
# default value
#endpoint: localhost:4317
samplingRatePerMillion: 100
```

For more information about the `TracingConfiguration` struct, see
[API server config API (v1beta1)](/docs/reference/config-api/apiserver-config.v1beta1/#apiserver-k8s-io-v1beta1-TracingConfiguration).
[API server config API (v1)](/docs/reference/config-api/apiserver-config.v1/#apiserver-k8s-io-v1-TracingConfiguration).

### kubelet traces

Expand All @@ -106,8 +106,6 @@ This is an example snippet of a kubelet config that records spans for 1 in 10000
```yaml
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
featureGates:
KubeletTracing: true
tracing:
# default value
#endpoint: localhost:4317
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,21 +113,24 @@ resource requests/limits of that type for each container in the Pod.

{{< feature-state feature_gate_name="PodLevelResources" >}}

Starting in Kubernetes 1.32, you can also specify resource requests and limits at
Provided your cluster has the `PodLevelResources`
[feature gate](/docs/reference/command-line-tools-reference/feature-gates/) enabled,
you can specify resource requests and limits at
the Pod level. At the Pod level, Kubernetes {{< skew currentVersion >}}
only supports resource requests or limits for specific resource types: `cpu` and /
or `memory`. This feature is currently in alpha and with the feature enabled,
Kubernetes allows you to declare an overall resource budget for the Pod, which is
especially helpful when dealing with a large number of containers where it can be
difficult to accurately gauge individual resource needs. Additionally, it enables
containers within a Pod to share idle resources with each other, improving resource
utilization.
or `memory` and / or `hugepages`. With this feature, Kubernetes allows you to declare an overall resource
budget for the Pod, which is especially helpful when dealing with a large number of
containers where it can be difficult to accurately gauge individual resource needs.
Additionally, it enables containers within a Pod to share idle resources with each
other, improving resource utilization.

For a Pod, you can specify resource limits and requests for CPU and memory by including the following:
* `spec.resources.limits.cpu`
* `spec.resources.limits.memory`
* `spec.resources.limits.hugepages-<size>`
* `spec.resources.requests.cpu`
* `spec.resources.requests.memory`
* `spec.resources.requests.hugepages-<size>`

## Resource units in Kubernetes

Expand Down Expand Up @@ -718,6 +721,12 @@ extender.
}
```

#### Extended resources allocation by DRA
Extended resources allocation by DRA allows cluster administrators to specify an `extendedResourceName`
in DeviceClass, then the devices matching the DeviceClass can be requested from a pod's extended
resource requests. Read more about
[Extended Resource allocation by DRA](/docs/concepts/scheduling-eviction/dynamic-resource-allocation/#extended-resource).

### Consuming extended resources

Users can consume extended resources in Pod specs like CPU and memory.
Expand Down Expand Up @@ -934,3 +943,4 @@ memory limit (and possibly request) for that container.
* Read about [project quotas](https://www.linux.org/docs/man8/xfs_quota.html) in XFS
* Read more about the [kube-scheduler configuration reference (v1)](/docs/reference/config-api/kube-scheduler-config.v1/)
* Read more about [Quality of Service classes for Pods](/docs/concepts/workloads/pods/pod-qos/)
* Read more about [Extended Resource allocation by DRA](/docs/concepts/scheduling-eviction/dynamic-resource-allocation/#extended-resource)
Original file line number Diff line number Diff line change
Expand Up @@ -64,13 +64,6 @@ There are three types of hook handlers that can be implemented for Containers:
Resources consumed by the command are counted against the Container.
* HTTP - Executes an HTTP request against a specific endpoint on the Container.
* Sleep - Pauses the container for a specified duration.
This is a beta-level feature default enabled by the `PodLifecycleSleepAction`
[feature gate](/docs/reference/command-line-tools-reference/feature-gates/).

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

### Hook handler execution

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -270,11 +270,12 @@ the NUMA node where these devices are allocated. Also, for NUMA-based machines,
information about memory and hugepages reserved for a container.

Starting from Kubernetes v1.27, the `List` endpoint can provide information on resources
of running pods allocated in `ResourceClaims` by the `DynamicResourceAllocation` API. To enable
this feature `kubelet` must be started with the following flags:
of running pods allocated in `ResourceClaims` by the `DynamicResourceAllocation` API.
Starting from Kubernetes v1.34, this feature is enabled by default.
To disable, `kubelet` must be started with the following flags:

```
--feature-gates=DynamicResourceAllocation=true,KubeletPodResourcesDynamicResources=true
--feature-gates=KubeletPodResourcesDynamicResources=false
```

```gRPC
Expand Down Expand Up @@ -414,7 +415,7 @@ will continue working.

### `Get` gRPC endpoint {#grpc-endpoint-get}

{{< feature-state state="alpha" for_k8s_version="v1.27" >}}
{{< feature-state state="beta" for_k8s_version="v1.34" >}}

The `Get` endpoint provides information on resources of a running Pod. It exposes information
similar to those described in the `List` endpoint. The `Get` endpoint requires `PodName`
Expand All @@ -428,18 +429,19 @@ message GetPodResourcesRequest {
}
```

To enable this feature, you must start your kubelet services with the following flag:
To disable this feature, you must start your kubelet services with the following flag:

```
--feature-gates=KubeletPodResourcesGet=true
--feature-gates=KubeletPodResourcesGet=false
```

The `Get` endpoint can provide Pod information related to dynamic resources
allocated by the dynamic resource allocation API. To enable this feature, you must
ensure your kubelet services are started with the following flags:
allocated by the dynamic resource allocation API.
Starting from Kubernetes v1.34, this feature is enabled by default.
To disable, `kubelet` must be started with the following flags:

```
--feature-gates=KubeletPodResourcesGet=true,DynamicResourceAllocation=true,KubeletPodResourcesDynamicResources=true
--feature-gates=KubeletPodResourcesDynamicResources=false
```

## Device plugin integration with the Topology Manager
Expand Down Expand Up @@ -509,3 +511,4 @@ Here are some examples of device plugin implementations:
* Learn about the [Topology Manager](/docs/tasks/administer-cluster/topology-manager/)
* Read about using [hardware acceleration for TLS ingress](/blog/2019/04/24/hardware-accelerated-ssl/tls-termination-in-ingress-controllers-using-kubernetes-device-plugins-and-runtimeclass/)
with Kubernetes
* Read more about [Extended Resource allocation by DRA](/docs/concepts/scheduling-eviction/dynamic-resource-allocation/#extended-resource)
2 changes: 1 addition & 1 deletion content/en/docs/concepts/policy/node-resource-managers.md
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ listed in alphabetical order:
: Prevent all the pods regardless of their Quality of Service class to run on reserved CPUs
(available since Kubernetes v1.32)

`prefer-align-cpus-by-uncorecache` (alpha, hidden by default)
`prefer-align-cpus-by-uncorecache` (beta, visible by default)
: Align CPUs by uncore (Last-Level) cache boundary on a best-effort way
(available since Kubernetes v1.32)

Expand Down
24 changes: 24 additions & 0 deletions content/en/docs/concepts/scheduling-eviction/assign-pod-node.md
Original file line number Diff line number Diff line change
Expand Up @@ -641,6 +641,30 @@ spec:

The above Pod will only run on the node `kube-01`.

## nominatedNodeName

{{< feature-state feature_gate_name="NominatedNodeNameForExpectation" >}}

`nominatedNodeName` can be used for external components to nominate node for a pending pod.
This nomination is best effort: it might be ignored if the scheduler determines the pod cannot go to a nominated node.

Also, this field can be (over)written by the scheduler:
- If the scheduler finds a node to nominate via the preemption.
- If the scheduler decides where the pod is going, and move it to the binding cycle.
- Note that, in this case, `nominatedNodeName` is put only when the pod has to go through `WaitOnPermit` or `PreBind` extension points.

Here is an example of a Pod status using the `nominatedNodeName` field:

```yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
...
status:
nominatedNodeName: kube-01
```

## Pod topology spread constraints

You can use _topology spread constraints_ to control how {{< glossary_tooltip text="Pods" term_id="Pod" >}}
Expand Down
Loading