Skip to content

Commit 7a4fbbc

Browse files
committed
Update the description of matchLabelKeys to align with the design change
1 parent 495abc8 commit 7a4fbbc

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

content/en/docs/concepts/scheduling-eviction/topology-spread-constraints.md

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -131,18 +131,20 @@ your cluster. Those fields are:
131131
See [Label Selectors](/docs/concepts/overview/working-with-objects/labels/#label-selectors)
132132
for more details.
133133

134-
- **matchLabelKeys** is a list of pod label keys to select the pods over which
135-
spreading will be calculated. The keys are used to lookup values from the pod labels,
136-
those key-value labels are ANDed with `labelSelector` to select the group of existing
137-
pods over which spreading will be calculated for the incoming pod. The same key is
138-
forbidden to exist in both `matchLabelKeys` and `labelSelector`. `matchLabelKeys` cannot
139-
be set when `labelSelector` isn't set. Keys that don't exist in the pod labels will be
140-
ignored. A null or empty list means only match against the `labelSelector`.
134+
- **matchLabelKeys** is a list of pod label keys to select the group of pods over which
135+
the spreading skew will be calculated. At a pod creation,
136+
apiserver will use those keys to lookup values from the incoming pod labels,
137+
and those key-value labels will be merged with existing `labelSelector`.
138+
The same key is forbidden to exist in both `matchLabelKeys` and `labelSelector`.
139+
`matchLabelKeys` cannot be set when `labelSelector` isn't set.
140+
Keys that don't exist in the pod labels will be ignored.
141+
A null or empty list means only match against the `labelSelector`.
142+
It's not recommended to use `matchLabelKeys` with labels that might be updated
143+
because the update of the label isn't reflected onto the merged `LabelSelector`.
141144

142145
With `matchLabelKeys`, you don't need to update the `pod.spec` between different revisions.
143146
The controller/operator just needs to set different values to the same label key for different
144-
revisions. The scheduler will assume the values automatically based on `matchLabelKeys`. For
145-
example, if you are configuring a Deployment, you can use the label keyed with
147+
revisions. For example, if you are configuring a Deployment, you can use the label keyed with
146148
[pod-template-hash](/docs/concepts/workloads/controllers/deployment/#pod-template-hash-label), which
147149
is added automatically by the Deployment controller, to distinguish between different revisions
148150
in a single Deployment.

0 commit comments

Comments
 (0)