Skip to content

Commit a33d6d0

Browse files
authored
Merge pull request kubernetes#3116 from ahg-g/ahg-nss-ga
KEP-2249: Graduate PodAffinityNamespaceSelector to stable
2 parents 5cb5f8f + 47e318f commit a33d6d0

File tree

3 files changed

+38
-9
lines changed

3 files changed

+38
-9
lines changed

keps/prod-readiness/sig-scheduling/2249.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,5 @@ alpha:
33
approver: "@wojtek-t"
44
beta:
55
approver: "@wojtek-t"
6+
stable:
7+
approver: "@wojtek-t"

keps/sig-scheduling/2249-pod-affinity-namespace-selector/README.md

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ To get started with this template:
2424
appropriate SIG(s).
2525
- [x] **Create a PR for this KEP.**
2626
Assign it to people in the SIG who are sponsoring this process.
27-
- [ ] **Merge early and iterate.**
27+
- [x] **Merge early and iterate.**
2828
Avoid getting hung up on specific details and instead aim to get the goals of
2929
the KEP clarified and merged quickly. The best way to do this is to just
3030
start with the high-level sections and fill out details incrementally in
@@ -129,11 +129,11 @@ Items marked with (R) are required *prior to targeting to a milestone / release*
129129
- [x] (R) Design details are appropriately documented
130130
- [x] (R) Test plan is in place, giving consideration to SIG Architecture and SIG Testing input
131131
- [x] (R) Graduation criteria is in place
132-
- [ ] (R) Production readiness review completed
133-
- [ ] (R) Production readiness review approved
132+
- [x] (R) Production readiness review completed
133+
- [x] (R) Production readiness review approved
134134
- [x] "Implementation History" section is up-to-date for milestone
135-
- [ ] User-facing documentation has been created in [kubernetes/website], for publication to [kubernetes.io]
136-
- [ ] Supporting documentation—e.g., additional design documents, links to mailing list discussions/SIG meetings, relevant PRs/issues, release notes
135+
- [x] User-facing documentation has been created in [kubernetes/website], for publication to [kubernetes.io]
136+
- [x] Supporting documentation—e.g., additional design documents, links to mailing list discussions/SIG meetings, relevant PRs/issues, release notes
137137

138138
<!--
139139
**Note:** This checklist is iterative and should be reviewed and updated every time this enhancement is being considered for a milestone.
@@ -349,7 +349,7 @@ type PodAffinityTerm struct {
349349
// The term is applied to the union of the namespaces selected by this field
350350
// and the ones listed in the namespaces field.
351351
// nil selector and empty namespaces list means "this pod's namespace"
352-
// An empty selector ({}) is not valid.
352+
// An empty selector ({}) means all namespaces.
353353
NamespaceSelector *metav1.LabelSelector
354354
}
355355
```
@@ -399,7 +399,14 @@ proposal will be implemented, this is the place to discuss them.
399399
- Benchmark Tests:
400400
- evaluate performance for the case where the selector matches a large number of pods
401401
in large number of namespaces. The evaluation shows that using NamespaceSelector has no
402-
impact on performance (see https://github.com/kubernetes/kubernetes/pull/101329 for details).
402+
impact on performance, summarized as follows:
403+
- compares affinity performance without namespace selector
404+
of a workload that puts all pods in one namespace vs splitting them across 100 namespaces
405+
and using namespace selector
406+
- tests both required and preferred, and for each affinity and anti-affinity
407+
- measures the performance (latency and throughput) of scheduling 1000 pods on
408+
5k nodes with 5k existing pods (4k in case of required anti-affinity)
409+
- (see https://github.com/kubernetes/kubernetes/pull/101329 for details).
403410

404411
<!--
405412
**Note:** *Not required until targeted at a release.*
@@ -583,6 +590,25 @@ _This section must be completed when targeting beta graduation to a release._
583590
* **How can an operator determine if the feature is in use by workloads?**
584591
The operator can query pods with the NamespaceSelector field set in pod affinity terms.
585592

593+
* **How can someone using this feature know that it is working for their instance?**
594+
<!--
595+
For instance, if this is a pod-related feature, it should be possible to determine if the feature is functioning properly
596+
for each individual pod.
597+
Pick one more of these and delete the rest.
598+
Please describe all items visible to end users below with sufficient detail so that they can verify correct enablement
599+
and operation of this feature.
600+
Recall that end users cannot usually observe component logs or access metrics.
601+
-->
602+
603+
- [x] Other (treat as last resort)
604+
- Details: inter-pod affinity as a feature doesn't trigger pod status updates on its own,
605+
none of the scheduler's filters/scores do on their own. If a pod using affinity
606+
was successfully assigned a node, nodeName will be updated, if not, then
607+
PodScheduled condition will be false, and an event will be recorded with a detailed
608+
message describing the reason including the failed filters (inter-pod affnity could
609+
be one of them).
610+
611+
586612
* **What are the SLIs (Service Level Indicators) an operator can use to determine
587613
the health of the service?**
588614
- [x] Metrics
@@ -686,6 +712,7 @@ information to express the idea and why it was not acceptable.
686712
- 2021-01-11: Initial KEP sent for review
687713
- 2021-02-10: Remove the restriction on empty namespace selector
688714
- 2021-04-26: Graduate the feature to Beta
715+
- 2022-01-08: Graduate the feature to Stable
689716

690717
<!--
691718
Major milestones in the lifecycle of a KEP should be tracked in this section.

keps/sig-scheduling/2249-pod-affinity-namespace-selector/kep.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ prr-approvers:
1919
see-also:
2020

2121
# The target maturity stage in the current dev cycle for this KEP.
22-
stage: beta
22+
stage: stable
2323

2424
# The most recent milestone for which work toward delivery of this KEP has been
2525
# done. This can be the current (upcoming) milestone, if it is being actively
2626
# worked on.
27-
latest-milestone: "v1.22"
27+
latest-milestone: "v1.24"
2828

2929
# The milestone at which this feature was, or is targeted to be, at each stage.
3030
milestone:

0 commit comments

Comments
 (0)