Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Official v1.29 Release Docs #43082

Merged
merged 173 commits into from
Dec 13, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
173 commits
Select commit Hold shift + click to select a range
83bb609
add authorization config documentation
palnabarun Jun 30, 2023
84e4de9
Tracking commit for v1.29 Docs
Rishit-dagli Aug 16, 2023
2ff476c
KEP-3668: Update Service and feature-gate docs for GA
xuzhenglun Aug 29, 2023
ac5112e
Graduate APIListChunking to GA documentation
wojtek-t Aug 31, 2023
d26e66d
Remove alpha environment variable because feature is in beta
ardaguclu Sep 6, 2023
413a994
Merge pull request #42800 from wojtek-t/pagination_ga
k8s-ci-robot Sep 15, 2023
c203889
Merge pull request #42774 from xuzhenglun/dev-1.29
k8s-ci-robot Sep 16, 2023
38baef2
updates hugo.toml for 1.29 release
katcosgrove Sep 17, 2023
ba28234
update CloudDualStackNodeIPs to beta
danwinship Sep 4, 2023
5e449a1
Merge pull request #43083 from katcosgrove/config-toml-1.29
k8s-ci-robot Sep 19, 2023
4af01d0
Merge pull request #42875 from danwinship/kep-3705-beta
k8s-ci-robot Sep 26, 2023
ad943fc
Merge main into dev-1.29 to keep in sync
katcosgrove Oct 6, 2023
a83b56d
Merge pull request #43347 from katcosgrove/merged-main-dev-1.29
k8s-ci-robot Oct 11, 2023
3768e3f
move feature gates CronJobTimeZone, JobMutableNodeSchedulingDirective…
SataQiu Oct 16, 2023
d83c806
add doc for feature LoadBalancerIPMode
RyanAoh Oct 13, 2023
1c73d4a
Introduce of the deprecated FG: MergeCLIArgumentsWithConfig
chendave Oct 16, 2023
bff157a
Merge pull request #43515 from chendave/dev-1.29
k8s-ci-robot Oct 17, 2023
a7d7ebb
Merge pull request #43400 from SataQiu/update-featuregates-20231010
k8s-ci-robot Oct 17, 2023
280a933
Remove RetroactiveDefaultStorageClass feature gate.
Shubham82 Oct 17, 2023
a724145
Revert "Introduce of the deprecated FG: MergeCLIArgumentsWithConfig"
chendave Oct 17, 2023
1d1366e
Merge pull request #43530 from chendave/revert-43515-dev-1.29
k8s-ci-robot Oct 17, 2023
08888c2
Merge pull request #43476 from RyanAoh/dev-1.29
k8s-ci-robot Oct 18, 2023
d485edf
graduate PersistentVolumeLastPhaseTransitionTime to beta in v1.29
RomanBednar Oct 17, 2023
abb8d0b
remove GAed FG DownwardAPIHugePages
pacoxu Oct 18, 2023
bea7fa8
Update feature-gates-removed.md
pacoxu Oct 18, 2023
870b642
Merge pull request #43553 from pacoxu/remove-downward-api-huge-pages
k8s-ci-robot Oct 18, 2023
53a8725
update documentation for component-slis
Oct 18, 2023
d1c38b0
Merge pull request #43518 from Shubham82/remove_RetroactiveDefaultSto…
k8s-ci-robot Oct 18, 2023
5aa6dc7
PodLifecycleSleepAction
AxeZhan Oct 17, 2023
53be005
remove GAed Feature Gate GRPCContainerProbe
pacoxu Oct 18, 2023
057e4d4
kubeadm: EtcdLearnerMode is beta in v1.29
pacoxu Aug 31, 2023
fab6072
update SkipReadOnlyValidationGCE status to Deprecated
pacoxu Oct 19, 2023
f6a7302
Merge pull request #43552 from pacoxu/remove-grpc-container-probe-fg
k8s-ci-robot Oct 19, 2023
4659872
Merge pull request #43574 from pacoxu/deprecate-SkipReadOnlyValidatio…
k8s-ci-robot Oct 19, 2023
a3226de
Merge pull request #43562 from logicalhan/slis-ga
k8s-ci-robot Oct 19, 2023
1711494
Merge pull request #43428 from AxeZhan/sleepAction
k8s-ci-robot Oct 19, 2023
aeeb380
Promote CSINodeExpandSecret feature to GA
humblec Oct 17, 2023
314f5df
Replacement PR for PR 43554 that targets the dev-1.29 branch
reylejano Oct 22, 2023
3218e72
Merge pull request #43633 from reylejano/1.29-remove-topologymanager-…
k8s-ci-robot Oct 22, 2023
0fbfc94
Merge remote-tracking branch 'upstream/main' into dev-1.29
Princesso Oct 25, 2023
25615ec
Device Plugins: add info about beta graduation
bart0sh Oct 11, 2023
d05e393
Merge pull request #43682 from Princesso/merged-main-dev-1.29
Priyankasaggu11929 Oct 28, 2023
a9478b4
kubeadm: introduce documentation changes for super-admin.conf
neolit123 Oct 17, 2023
fe172fc
Add 1.32 removal info for v1beta3 flowcontrol API
liggitt Oct 31, 2023
636f1d8
Merge pull request #43540 from neolit123/1.29-add-super-admin-kubeconfig
k8s-ci-robot Oct 31, 2023
1571a07
add DisableNodeKubeProxyVersion feature gate
HirazawaUi Oct 6, 2023
b034e43
Merge pull request #43535 from humblec/dev-1.29-nodeexpandsecret
k8s-ci-robot Nov 1, 2023
91aa69b
Update v1beta2 flowcontrol guidance
liggitt Nov 1, 2023
e962925
update documented metrics for v1.29
Nov 1, 2023
7db05a8
Merge remote-tracking branch 'upstream/main' into dev-1.29
drewhagen Nov 2, 2023
2de5b8f
Merge pull request #43789 from drewhagen/merged-main-dev-1.29
k8s-ci-robot Nov 2, 2023
5e8aebc
Merge pull request #43532 from RomanBednar/pv-last-phase-transition-t…
k8s-ci-robot Nov 3, 2023
9af50f2
Merge pull request #42801 from pacoxu/update-kubeadm-fgs
k8s-ci-robot Nov 3, 2023
7373138
Docs update for Job Backoff Limit Per Index in Beta
mimowo Oct 9, 2023
6886cad
Docs update about JobReadyPods graduated to GA
mimowo Nov 3, 2023
c71a216
update docs to promote PodReadyToStartContainersCondition into beta
charles-chenzz Oct 17, 2023
270468a
Merge remote-tracking branch 'upstream/main' into dev-1.29
katcosgrove Nov 6, 2023
6fde663
Merge pull request #43838 from katcosgrove/merged-main-dev-1.29
k8s-ci-robot Nov 6, 2023
aa48ad5
Merge pull request #43387 from mimowo/pods-ready-ga
k8s-ci-robot Nov 7, 2023
7fe30f5
Merge pull request #43388 from mimowo/backoff-limit-per-index-beta
k8s-ci-robot Nov 7, 2023
fff0693
Merge pull request #42907 from ardaguclu/kep-3895-promote-beta
k8s-ci-robot Nov 9, 2023
97a1c74
v1.29: kubeadm skew policy for kubelet is n-3
pacoxu Nov 1, 2023
ddb784a
certificates.md: add note about system:masters in apiserver cert
neolit123 Nov 10, 2023
0ebfe8b
Merge pull request #43769 from pacoxu/kubeadm-kubelet-skew-policy
k8s-ci-robot Nov 10, 2023
3be75f2
Graduate JobPodReplacementPolicy to beta
alculquicondor Oct 17, 2023
c55e6f2
Merge pull request #43870 from neolit123/1.29-fix-system-masters-apis…
k8s-ci-robot Nov 13, 2023
9e36b6c
Merge pull request #43529 from alculquicondor/replacement_beta
k8s-ci-robot Nov 13, 2023
725f68f
dra: warn about scheduling performance
pohly Nov 13, 2023
4efddf9
Merge pull request #43907 from pohly/dra-scheduling-impact
k8s-ci-robot Nov 14, 2023
d820f2b
add CRDValidationRatcheting 1.29 docs
alexzielenski Oct 18, 2023
407407e
Placeholder for KEP-4006
seans3 Oct 20, 2023
fb1bd22
Merge main into dev-1.29 to keep in sync
katcosgrove Nov 14, 2023
b1d5b82
remove MultiCIDRRangeAllocator
aojea Nov 14, 2023
f4d41c2
Merge pull request #43941 from aojea/cluster_cidr_remove
k8s-ci-robot Nov 14, 2023
8f7cfdb
modifying docs for SidecarContainers beta graduation (#43471)
matthyx Nov 15, 2023
7899eb0
Merge pull request #43938 from katcosgrove/merged-main-dev-1.29
k8s-ci-robot Nov 15, 2023
16fb2e6
Promote CRD validation rules to GA
cici37 Oct 11, 2023
cfbe80d
Merge pull request #43441 from cici37/2876-1.29
k8s-ci-robot Nov 16, 2023
50ea975
update pod-lifecycle.md to reflect the state of podreadytostartcontainer
charles-chenzz Nov 16, 2023
e109ce7
first round of comment address
charles-chenzz Nov 16, 2023
42c9e4e
KEP-4193: bound service account token improvements
enj Nov 15, 2023
bcb527b
Add LegacyServiceAccountTokenCleanUp feature to beta
yt2985 Oct 28, 2023
301fccd
Merge pull request #43778 from logicalhan/inst-docs
k8s-ci-robot Nov 17, 2023
43c7d05
Merge pull request #43958 from enj/enj/d/sa_node_ref
k8s-ci-robot Nov 17, 2023
8598729
update docs for KMSv2 and KMSv2KDF stable
aramase Oct 10, 2023
b8b45ee
Merge pull request #43620 from seans3/kep-4006-docs
k8s-ci-robot Nov 18, 2023
f893a19
Resolved merge conflict when merging main into dev-1.29 branch
Princesso Nov 19, 2023
5627db2
add documentation for AuthorizationConfiguration
palnabarun Nov 20, 2023
2ec25fb
add: the doc for matchLabelKeys/mismatchLabelKeys in pod (anti)affini…
sanposhiho Nov 20, 2023
8b9f3f8
review feedback
aramase Nov 17, 2023
9681b5d
Merge pull request #43999 from Princesso/merged-main-dev-1.29
k8s-ci-robot Nov 20, 2023
a8d08be
third round of comment address
charles-chenzz Nov 20, 2023
92a8fce
Merge pull request #43398 from aramase/aramase/d/kep_3299_stable_doc_…
k8s-ci-robot Nov 21, 2023
6dd3091
ClusterTrustBundles: Document projected volumes
ahmedtd Oct 20, 2023
c07ce39
Graduate ReadWriteOncePod to GA
chrishenzie Oct 10, 2023
01e6f31
add docs for StructuredAuthenticationConfig v1alpha1
aramase Oct 10, 2023
394db54
Decouple TaintManager from NodeLifeCycleController (KEP-3902)
atosatto Jul 10, 2023
99df3a3
Merge pull request #43600 from ahmedtd/ctb-projection
k8s-ci-robot Nov 21, 2023
fdf935b
Docs update for Beta PodHostIPs
wzshiming Nov 1, 2023
1056863
Update from code review
palnabarun Nov 22, 2023
421821d
Merge pull request #43563 from yt2985/dev-1.29
k8s-ci-robot Nov 22, 2023
1c3945f
apiserver: update APF documentation for GA
tkashem Nov 22, 2023
dc15c69
Merge pull request #43435 from bart0sh/PR029-Add-CDI-devices-to-devic…
k8s-ci-robot Nov 22, 2023
2d9fbc1
Merge remote-tracking branch 'upstream/main' into dev-1.29
katcosgrove Nov 22, 2023
fca3489
Merge pull request #44040 from katcosgrove/merged-main-dev-1.29
k8s-ci-robot Nov 22, 2023
03e2976
Add more context to downgrade example
palnabarun Nov 24, 2023
4c4a07f
Merge remote-tracking branch 'upstream/main' into dev-1.29
taniaduggal Nov 24, 2023
da5638c
Merge pull request #43417 from chrishenzie/readwriteoncepod-ga
k8s-ci-robot Nov 25, 2023
a4fd1da
Merge pull request #44069 from taniaduggal/merged-main-dev-1.29
k8s-ci-robot Nov 26, 2023
edddb55
KEP 4216: Doc changes for image pull per runtime class
kiashok Oct 17, 2023
8ff9e80
Merge pull request #43555 from atosatto/tec-dev-1.29
k8s-ci-robot Nov 26, 2023
21ac70e
Wrap markdown text
palnabarun Nov 27, 2023
123973c
Merge pull request #41892 from palnabarun/authz-config-docs
k8s-ci-robot Nov 27, 2023
cb04844
Merge pull request #44028 from kiashok/docs-kep4216-dev1.29
k8s-ci-robot Nov 27, 2023
6440c16
Merge remote-tracking branch 'upstream/main' into dev-1.29
katcosgrove Nov 27, 2023
4a17ee3
Merge pull request #43533 from charles-chenzz/dev-1.29
k8s-ci-robot Nov 27, 2023
a3a4666
Merge pull request #43448 from wzshiming/kep-2681
k8s-ci-robot Nov 27, 2023
1beb062
Merge pull request #44106 from katcosgrove/merged-main-dev-1.29
k8s-ci-robot Nov 27, 2023
75e93c6
Document the nftables kube-proxy mode.
danwinship Oct 19, 2023
41e0c2f
jpbetz feedback
Nov 27, 2023
6f44e15
typo fix
Nov 27, 2023
fdcd1f6
Merge pull request #43560 from alexzielenski/4008-beta
k8s-ci-robot Nov 27, 2023
d5466c3
Merge pull request #43588 from danwinship/kep-3866-nftables-proxy-alpha
k8s-ci-robot Nov 27, 2023
74caa0d
review feedback
aramase Nov 27, 2023
d6f0778
Remove description of how iptables kube-proxy differs from userspace
danwinship Nov 26, 2023
b34bf12
garbage collection: add blurb about ImageMaximumGCAge
haircommander Nov 14, 2023
7c2f5c4
Merge pull request #43397 from aramase/aramase/d/kep_3331_v1alpha1_do…
k8s-ci-robot Nov 28, 2023
90c282e
kep-2305: document dynamic cardinality enforcement
rexagod Nov 13, 2023
8ff7614
Merge pull request #43348 from HirazawaUi/add-DisableNodeKubeProxyVer…
k8s-ci-robot Nov 28, 2023
d608006
Merge pull request #41998 from rexagod/document-kep-2305
k8s-ci-robot Nov 28, 2023
4e156c7
Add documentation about user namespaces and PSS
saschagrunert Nov 3, 2023
445b03d
Merge pull request #43544 from haircommander/image-max-gc
k8s-ci-robot Nov 28, 2023
6f2db0b
Change font size for image pull per runtime doc
kiashok Nov 28, 2023
398961a
Merge pull request #43749 from liggitt/deprecated-1-29
k8s-ci-robot Nov 28, 2023
62ab7c4
Merge pull request #43946 from tkashem/apf-v1-doc
k8s-ci-robot Nov 28, 2023
57ae1bd
Merge pull request #44124 from kiashok/docs-kep4216-2-dev1.29
k8s-ci-robot Nov 28, 2023
8a29190
Merge pull request #43803 from kinvolk/dev-1.29-user-namespaces-pss
k8s-ci-robot Nov 28, 2023
8ccd0cc
Add Documentation for VolumeAttributesClass KEP-3751
sunnylovestiramisu Oct 13, 2023
b90698e
Update Based on Comments - Nov 27
sunnylovestiramisu Nov 28, 2023
058e522
Update Based on Comments - Nov 28
sunnylovestiramisu Nov 28, 2023
a3351b5
Merge pull request #43463 from sunnylovestiramisu/dev-1.29
k8s-ci-robot Nov 28, 2023
dff94b8
KEP-1880 Multiple ServiceCIDR
aojea Nov 25, 2023
0401617
Merge pull request #43469 from aojea/placeholder_kep1880
k8s-ci-robot Nov 29, 2023
c7d2933
Update information about CronJob's unsupported time zone field
soltysh Oct 23, 2023
1ea312d
Revise docs for API tracking of IP address assignment
sftim Nov 29, 2023
387192d
Fix style nits
sftim Nov 29, 2023
60a0a66
Add 1.29 to release schedule for 1.29 release
katcosgrove Nov 29, 2023
ac0ebfa
Merge pull request #43654 from soltysh/tz_validation
k8s-ci-robot Nov 29, 2023
b9b22e3
Merge pull request #44127 from sftim/20231129_revise_vips_api_ipam
k8s-ci-robot Nov 29, 2023
deaf1b9
Merge remote-tracking branch 'upstream/main' into dev-1.29
drewhagen Nov 29, 2023
00e0202
Merge pull request #44140 from drewhagen/merged-main-dev-1.29
k8s-ci-robot Nov 30, 2023
8dc0806
Link PSS to User Namespaces
saschagrunert Nov 30, 2023
41135ad
Merge pull request #44156 from saschagrunert/dev-1.29-user-namespaces…
k8s-ci-robot Nov 30, 2023
cf47dab
Fix redundancy in kube-proxy iptables and ipvs docs
danwinship Nov 27, 2023
9795352
UnauthenticatedHTTP2DOSMitigation default in 1.29 is set to true
troy0820 Dec 1, 2023
d5c5300
Clarify iptables performance slightly
danwinship Nov 27, 2023
ce56b7a
Merge pull request #44110 from danwinship/proxy-refactor
k8s-ci-robot Dec 1, 2023
dd5be8b
updating dates to reflect delayed release
katcosgrove Dec 1, 2023
f6b5c5f
Merge pull request #44177 from troy0820/troy0820/update-feature-gate-…
k8s-ci-robot Dec 3, 2023
45fb394
Merge main into dev-1.29 to maintain sync
katcosgrove Dec 7, 2023
9b007ed
Merge pull request #44252 from katcosgrove/merged-main-dev-1.29
k8s-ci-robot Dec 7, 2023
0f9c965
Merge branch 'main' into dev-1.29
sftim Dec 9, 2023
58a6a19
Merge pull request #44286 from sftim/20231209_dev_1.29_sync
k8s-ci-robot Dec 10, 2023
405985d
Updates v1.29 hugo.toml to include latest patches ahead of release
katcosgrove Dec 11, 2023
38d537b
Update data/releases/schedule.yaml
katcosgrove Dec 11, 2023
d2004ab
Merge pull request #44135 from katcosgrove/patch-release-schedule
k8s-ci-robot Dec 11, 2023
e57cf32
Merge 'dev-1.29' with main
sftim Dec 11, 2023
cada199
Merge pull request #44305 from sftim/20231211_dev_1.29_merge_main
k8s-ci-robot Dec 11, 2023
d60ddf8
Merge pull request #44303 from katcosgrove/update-1.29-hugo.toml
sftim Dec 12, 2023
2520994
Feature gate SchedulerQueueingHints is disabled by default
sanposhiho Dec 13, 2023
bad6aa4
Update content/en/docs/reference/command-line-tools-reference/feature…
katcosgrove Dec 13, 2023
9010b97
Revise message
sftim Dec 13, 2023
5682790
Merge pull request #44316 from sanposhiho/qhint-fix
katcosgrove Dec 13, 2023
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
77 changes: 44 additions & 33 deletions assets/scss/_custom.scss
Original file line number Diff line number Diff line change
Expand Up @@ -392,52 +392,63 @@ footer {
}

main {
.td-content table code,
.td-content>table td {
word-break: break-word;
}

/* SCSS Related to the Metrics Table */
/* SCSS Related to the Metrics list */

div.metric:nth-of-type(odd) { // Look & Feel , Aesthetics
background-color: $light-grey;
}

@media (max-width: 767px) { // for mobile devices, Display the names, Stability levels & types
div.metrics {

table.metrics {
th:nth-child(n + 4),
td:nth-child(n + 4) {
.metric {
div:empty{
display: none;
}

td.metric_type{
min-width: 7em;
display: flex;
flex-direction: column;
flex-wrap: wrap;
gap: .75em;
padding:.75em .75em .75em .75em;

.metric_name{
font-size: large;
font-weight: bold;
word-break: break-word;
}
td.metric_stability_level{
min-width: 6em;

label{
font-weight: bold;
margin-right: .5em;
}
}
}

table.metrics tbody{ // Tested dimensions to improve overall aesthetic of the table
tr {
td {
font-size: smaller;
}
td.metric_labels_varying{
min-width: 9em;
}
td.metric_type{
min-width: 9em;
ul {
li:empty{
display: none;
}
td.metric_description{
min-width: 10em;
display: flex;
flex-direction: column;
gap: .75em;
flex-wrap: wrap;
li.metric_labels_varying{
span{
display: inline-block;
background-color: rgb(240, 239, 239);
padding: 0 0.5em;
margin-right: .35em;
font-family: monospace;
border: 1px solid rgb(230 , 230 , 230);
border-radius: 5%;
margin-bottom: .35em;
}
}

}

}

table.no-word-break td,
table.no-word-break code {
word-break: normal;
}

}
}

// blockquotes and callouts
Expand Down
16 changes: 15 additions & 1 deletion content/en/docs/concepts/architecture/garbage-collection.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,20 @@ collection, which deletes images in order based on the last time they were used,
starting with the oldest first. The kubelet deletes images
until disk usage reaches the `LowThresholdPercent` value.

#### Garbage collection for unused container images {#image-maximum-age-gc}

{{< feature-state for_k8s_version="v1.29" state="alpha" >}}

As an alpha feature, you can specify the maximum time a local image can be unused for,
regardless of disk usage. This is a kubelet setting that you configure for each node.

To configure the setting, enable the `ImageMaximumGCAge`
[feature gate](/docs/reference/command-line-tools-reference/feature-gates/) for the kubelet,
and also set a value for the `ImageMaximumGCAge` field in the kubelet configuration file.

The value is specified as a Kubernetes _duration_; for example, you can set the configuration
field to `3d12h`, which means 3 days and 12 hours.

### Container garbage collection {#container-image-garbage-collection}

The kubelet garbage collects unused containers based on the following variables,
Expand Down Expand Up @@ -178,4 +192,4 @@ configure garbage collection:

* Learn more about [ownership of Kubernetes objects](/docs/concepts/overview/working-with-objects/owners-dependents/).
* Learn more about Kubernetes [finalizers](/docs/concepts/overview/working-with-objects/finalizers/).
* Learn about the [TTL controller](/docs/concepts/workloads/controllers/ttlafterfinished/) that cleans up finished Jobs.
* Learn about the [TTL controller](/docs/concepts/workloads/controllers/ttlafterfinished/) that cleans up finished Jobs.
39 changes: 17 additions & 22 deletions content/en/docs/concepts/cluster-administration/flow-control.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ weight: 110

<!-- overview -->

{{< feature-state state="beta" for_k8s_version="v1.20" >}}
{{< feature-state state="stable" for_k8s_version="v1.29" >}}

Controlling the behavior of the Kubernetes API server in an overload situation
is a key task for cluster administrators. The {{< glossary_tooltip
Expand Down Expand Up @@ -45,30 +45,27 @@ are not subject to the `--max-requests-inflight` limit.

## Enabling/Disabling API Priority and Fairness

The API Priority and Fairness feature is controlled by a feature gate
and is enabled by default. See [Feature
Gates](/docs/reference/command-line-tools-reference/feature-gates/)
for a general explanation of feature gates and how to enable and
disable them. The name of the feature gate for APF is
"APIPriorityAndFairness". This feature also involves an {{<
glossary_tooltip term_id="api-group" text="API Group" >}} with: (a) a
`v1alpha1` version and a `v1beta1` version, disabled by default, and
(b) `v1beta2` and `v1beta3` versions, enabled by default. You can
disable the feature gate and API group beta versions by adding the
The API Priority and Fairness feature is controlled by a command-line flag
and is enabled by default. See
[Options](/docs/reference/command-line-tools-reference/kube-apiserver/options/)
for a general explanation of the available kube-apiserver command-line
options and how to enable and disable them. The name of the
command-line option for APF is "--enable-priority-and-fairness". This feature
also involves an {{<glossary_tooltip term_id="api-group" text="API Group" >}}
with: (a) a stable `v1` version, introduced in 1.29, and
enabled by default (b) a `v1beta3` version, enabled by default, and
deprecated in v1.29. You can
disable the API group beta version `v1beta3` by adding the
following command-line flags to your `kube-apiserver` invocation:

```shell
kube-apiserver \
--feature-gates=APIPriorityAndFairness=false \
--runtime-config=flowcontrol.apiserver.k8s.io/v1beta2=false,flowcontrol.apiserver.k8s.io/v1beta3=false \
--runtime-config=flowcontrol.apiserver.k8s.io/v1beta3=false \
# …and other flags as usual
```

Alternatively, you can enable the v1alpha1 and v1beta1 versions of the API group
with `--runtime-config=flowcontrol.apiserver.k8s.io/v1alpha1=true,flowcontrol.apiserver.k8s.io/v1beta1=true`.

The command-line flag `--enable-priority-and-fairness=false` will disable the
API Priority and Fairness feature, even if other flags have enabled it.
API Priority and Fairness feature.

## Concepts

Expand Down Expand Up @@ -178,14 +175,12 @@ server.
## Resources

The flow control API involves two kinds of resources.
[PriorityLevelConfigurations](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#prioritylevelconfiguration-v1beta2-flowcontrol-apiserver-k8s-io)
[PriorityLevelConfigurations](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#prioritylevelconfiguration-v1-flowcontrol-apiserver-k8s-io)
define the available priority levels, the share of the available concurrency
budget that each can handle, and allow for fine-tuning queuing behavior.
[FlowSchemas](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#flowschema-v1beta2-flowcontrol-apiserver-k8s-io)
[FlowSchemas](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#flowschema-v1-flowcontrol-apiserver-k8s-io)
are used to classify individual inbound requests, matching each to a
single PriorityLevelConfiguration. There is also a `v1alpha1` version
of the same API group, and it has the same Kinds with the same syntax and
semantics.
single PriorityLevelConfiguration.

### PriorityLevelConfiguration

Expand Down
17 changes: 15 additions & 2 deletions content/en/docs/concepts/cluster-administration/system-metrics.md
Original file line number Diff line number Diff line change
Expand Up @@ -202,10 +202,23 @@ Here is an example:
--allow-label-value number_count_metric,odd_number='1,3,5', number_count_metric,even_number='2,4,6', date_gauge_metric,weekend='Saturday,Sunday'
```

In addition to specifying this from the CLI, this can also be done within a configuration file. You
can specify the path to that configuration file using the `--allow-metric-labels-manifest` command
line argument to a component. Here's an example of the contents of that configuration file:

```yaml
allow-list:
- "metric1,label2": "v1,v2,v3"
- "metric2,label1": "v1,v2,v3"
```

Additionally, the `cardinality_enforcement_unexpected_categorizations_total` meta-metric records the
count of unexpected categorizations during cardinality enforcement, that is, whenever a label value
is encountered that is not allowed with respect to the allow-list contraints.

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

* Read about the [Prometheus text format](https://github.com/prometheus/docs/blob/master/content/docs/instrumenting/exposition_formats.md#text-based-format)
for metrics
* See the list of [stable Kubernetes metrics](https://github.com/kubernetes/kubernetes/blob/master/test/instrumentation/testdata/stable-metrics-list.yaml)
* Read about the [Kubernetes deprecation policy](/docs/reference/using-api/deprecation-policy/#deprecating-a-feature-or-behavior)

* Read about the [Kubernetes deprecation policy](/docs/reference/using-api/deprecation-policy/#deprecating-a-feature-or-behavior)
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,15 @@ There are two types of hook handlers that can be implemented for Containers:
* Exec - Executes a specific command, such as `pre-stop.sh`, inside the cgroups and namespaces of the Container.
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.
The "Sleep" action is available when the [feature gate](/docs/reference/command-line-tool-reference/feagure-gates/)
`PodLifecycleSleepAction` is enabled.

### Hook handler execution

When a Container lifecycle management hook is called,
the Kubernetes management system executes the handler according to the hook action,
`httpGet` and `tcpSocket` are executed by the kubelet process, and `exec` is executed in the container.
`httpGet` , `tcpSocket` and `sleep` are executed by the kubelet process, and `exec` is executed in the container.

Hook handler calls are synchronous within the context of the Pod containing the Container.
This means that for a `PostStart` hook,
Expand Down
11 changes: 11 additions & 0 deletions content/en/docs/concepts/containers/images.md
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,17 @@ that Kubernetes will keep trying to pull the image, with an increasing back-off
Kubernetes raises the delay between each attempt until it reaches a compiled-in limit,
which is 300 seconds (5 minutes).

### Image pull per runtime class

{{< feature-state for_k8s_version="v1.29" state="alpha" >}}
Kubernetes includes alpha support for performing image pulls based on the RuntimeClass of a Pod.

If you enable the `RuntimeClassInImageCriApi` [feature gate](/docs/reference/command-line-tools-reference/feature-gates/),
the kubelet references container images by a tuple of (image name, runtime handler) rather than just the
image name or digest. Your {{< glossary_tooltip text="container runtime" term_id="container-runtime" >}}
may adapt its behavior based on the selected runtime handler.
Pulling images based on runtime class will be helpful for VM based containers like windows hyperV containers.

## Serial and parallel image pulls

By default, kubelet pulls images serially. In other words, kubelet sends only
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,8 +159,8 @@ The general workflow of a device plugin includes the following steps:
{{< note >}}
The processing of the fully-qualified CDI device names by the Device Manager requires
that the `DevicePluginCDIDevices` [feature gate](/docs/reference/command-line-tools-reference/feature-gates/)
is enabled for the kubelet and the kube-apiserver. This was added as an alpha feature in Kubernetes
v1.28.
is enabled for both the kubelet and the kube-apiserver. This was added as an alpha feature in Kubernetes
v1.28 and graduated to beta in v1.29.
{{< /note >}}

### Handling kubelet restarts
Expand Down
102 changes: 102 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 @@ -358,6 +358,108 @@ The affinity term is applied to namespaces selected by both `namespaceSelector`
Note that an empty `namespaceSelector` ({}) matches all namespaces, while a null or empty `namespaces` list and
null `namespaceSelector` matches the namespace of the Pod where the rule is defined.

#### matchLabelKeys

{{< feature-state for_k8s_version="v1.29" state="alpha" >}}

{{< note >}}
<!-- UPDATE THIS WHEN PROMOTING TO BETA -->
The `matchLabelKeys` field is a alpha-level field and is disabled by default in
Kubernetes {{< skew currentVersion >}}.
When you want to use it, you have to enable it via the
`MatchLabelKeysInPodAffinity` [feature gate](/docs/reference/command-line-tools-reference/feature-gates/).
{{< /note >}}

Kubernetes includes an optional `matchLabelKeys` field for Pod affinity
or anti-affinity. The field specifies keys for the labels that should match with the incoming Pod's labels,
when satisfying the Pod (anti)affinity.

The keys are used to look up values from the pod labels; those key-value labels are combined
(using `AND`) with the match restrictions defined using the `labelSelector` field. The combined
filtering selects the set of existing pods that will be taken into Pod (anti)affinity calculation.

A common use case is to use `matchLabelKeys` with `pod-template-hash` (set on Pods
managed as part of a Deployment, where the value is unique for each revision).
Using `pod-template-hash` in `matchLabelKeys` allows you to target the Pods that belong
to the same revision as the incoming Pod, so that a rolling upgrade won't break affinity.

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: application-server
...
spec:
template:
affinity:
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- database
topologyKey: topology.kubernetes.io/zone
# Only Pods from a given rollout are taken into consideration when calculating pod affinity.
# If you update the Deployment, the replacement Pods follow their own affinity rules
# (if there are any defined in the new Pod template)
matchLabelKeys:
- pod-template-hash
```

#### mismatchLabelKeys

{{< feature-state for_k8s_version="v1.29" state="alpha" >}}

{{< note >}}
<!-- UPDATE THIS WHEN PROMOTING TO BETA -->
The `mismatchLabelKeys` field is a alpha-level field and is disabled by default in
Kubernetes {{< skew currentVersion >}}.
When you want to use it, you have to enable it via the
`MatchLabelKeysInPodAffinity` [feature gate](/docs/reference/command-line-tools-reference/feature-gates/).
{{< /note >}}

Kubernetes includes an optional `mismatchLabelKeys` field for Pod affinity
or anti-affinity. The field specifies keys for the labels that should **not** match with the incoming Pod's labels,
when satisfying the Pod (anti)affinity.

One example use case is to ensure Pods go to the topology domain (node, zone, etc) where only Pods from the same tenant or team are scheduled in.
In other words, you want to avoid running Pods from two different tenants on the same topology domain at the same time.

```yaml
apiVersion: v1
kind: Pod
metadata:
labels:
# Assume that all relevant Pods have a "tenant" label set
tenant: tenant-a
...
spec:
affinity:
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
# ensure that pods associated with this tenant land on the correct node pool
- matchLabelKeys:
- tenant
topologyKey: node-pool
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
# ensure that pods associated with this tenant can't schedule to nodes used for another tenant
- mismatchLabelKeys:
- tenant # whatever the value of the "tenant" label for this Pod, prevent
# scheduling to nodes in any pool where any Pod from a different
# tenant is running.
labelSelector:
# We have to have the labelSelector which selects only Pods with the tenant label,
# otherwise this Pod would hate Pods from daemonsets as well, for example,
# which aren't supposed to have the tenant label.
matchExpressions:
- key: tenant
operator: Exists
topologyKey: node-pool
```

#### More practical use-cases

Inter-pod affinity and anti-affinity can be even more useful when they are used with higher
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,17 @@ gets scheduled onto one node and then cannot run there, which is bad because
such a pending Pod also blocks all other resources like RAM or CPU that were
set aside for it.
{{< note >}}
Scheduling of pods which use ResourceClaims is going to be slower because of
the additional communication that is required. Beware that this may also impact
pods that don't use ResourceClaims because only one pod at a time gets
scheduled, blocking API calls are made while handling a pod with
ResourceClaims, and thus scheduling the next pod gets delayed.
{{< /note >}}
## Monitoring resources
The kubelet provides a gRPC service to enable discovery of dynamic resources of
Expand Down
Loading