You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -758,13 +758,24 @@ rollout. Similarly, consider large clusters and how enablement/disablement
758
758
will rollout across nodes.
759
759
-->
760
760
761
+
It shouldn't impact already running workloads. It's an opt-in feature,
762
+
and users need to set `matchLabelKeys` or `mismatchLabelKeys` field in PodAffinity or PodAntiAffinity to use this feature.
763
+
764
+
When this feature is disabled by the feature flag, the already created Pod's `matchLabelKeys`/`mismatchLabelKeys` (+ `labelSelector` generated from them) is kept.
765
+
But, the newly created Pod's `matchLabelKeys` or `mismatchLabelKeys` field is silently dropped.
766
+
761
767
###### What specific metrics should inform a rollback?
762
768
763
769
<!--
764
770
What signals should users be paying attention to when the feature is young
765
771
that might indicate a serious problem?
766
772
-->
767
773
774
+
- A spike on metric `schedule_attempts_total{result="error|unschedulable"}` when pods using this feature are added.
775
+
776
+
No need to check latency of the scheduler because the scheduler doesn't get changed at all for this feature.
777
+
The only possibility is the bug in the Pod creation process in kube-apiserver and it results in some unintended scheduling.
778
+
768
779
###### Were upgrade and rollback tested? Was the upgrade->downgrade->upgrade path tested?
769
780
770
781
<!--
@@ -773,12 +784,32 @@ Longer term, we may want to require automated upgrade/rollback tests, but we
773
784
are missing a bunch of machinery and tooling and can't do that now.
774
785
-->
775
786
787
+
We'll test it via this scenario:
788
+
789
+
1. start kube-apiserver with this feature disabled.
790
+
2. create one Pod with `matchLabelKeys` in PodAffinity.
791
+
3. No change should be observed in `labelSelector` in PodAffinity because the feature is disabled.
792
+
4. restart kube-apiserver with this feature enabled. (**First enablement**)
793
+
5. No change in Pod created at (2).
794
+
6. create one Pod with `matchLabelKeys` in PodAffinity.
795
+
7. `labelSelector` in PodAffinity should be changed based on `matchLabelKeys` and label value in the Pod because the feature is enabled.
796
+
8. restart kube-apiserver with this feature disabled. (**First disablement**)
797
+
9. No change in Pods created before.
798
+
10. create one Pod with `matchLabelKeys` in PodAffinity.
799
+
11. No change should be observed in `labelSelector` in PodAffinity because the feature is disabled.
800
+
12. restart kube-apiserver with this feature enabled. (**Second enablement**)
801
+
13. No change in Pods created before.
802
+
14. create one Pod with `matchLabelKeys` in PodAffinity.
803
+
15. `labelSelector` in PodAffinity should be changed based on `matchLabelKeys` and label value in the Pod because the feature is enabled.
804
+
776
805
###### Is the rollout accompanied by any deprecations and/or removals of features, APIs, fields of API types, flags, etc.?
777
806
778
807
<!--
779
808
Even if applying deprecation policies, they may still surprise some users.
780
809
-->
781
810
811
+
No.
812
+
782
813
### Monitoring Requirements
783
814
784
815
<!--
@@ -796,6 +827,8 @@ checking if there are objects with field X set) may be a last resort. Avoid
796
827
logs or events for this purpose.
797
828
-->
798
829
830
+
The operator can query pods with `matchLabelKeys` or `mismatchLabelKeys` field set in PodAffinity or PodAntiAffinity.
831
+
799
832
###### How can someone using this feature know that it is working for their instance?
800
833
801
834
<!--
@@ -807,13 +840,13 @@ and operation of this feature.
807
840
Recall that end users cannot usually observe component logs or access metrics.
808
841
-->
809
842
810
-
- [ ] Events
811
-
- Event Reason:
812
-
- [ ] API .status
813
-
- Condition name:
814
-
- Other field:
815
-
- [ ] Other (treat as last resort)
843
+
- [x] Other (treat as last resort)
816
844
- Details:
845
+
This feature doesn't cause any logs, any events, any pod status updates.
846
+
But, people can determine it's being evaluated by looking at `labelSelector` in PodAffinity or PodAntiAffinity
847
+
in which they set `matchLabelKey` or `mismatchLabelKeys`.
848
+
If `labelSelector` is modified after Pods' creation, this feature is working correctly.
849
+
817
850
818
851
###### What are the reasonable SLOs (Service Level Objectives) for the enhancement?
819
852
@@ -832,18 +865,20 @@ These goals will help you determine what you need to measure (SLIs) in the next
832
865
question.
833
866
-->
834
867
868
+
Metric `plugin_execution_duration_seconds{plugin="InterPodAffinity"}` <= 100ms on 90-percentile.
869
+
870
+
This feature shouldn't change the latency of InterPodAffinity plugin at all.
871
+
835
872
###### What are the SLIs (Service Level Indicators) an operator can use to determine the health of the service?
0 commit comments