@@ -131,18 +131,24 @@ your cluster. Those fields are:
131
131
See [ Label Selectors] ( /docs/concepts/overview/working-with-objects/labels/#label-selectors )
132
132
for more details.
133
133
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
+ the kube-apiserver uses those keys to lookup values from the incoming pod labels,
137
+ and those key-value labels will be merged with any 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
+
143
+ {{< caution >}}
144
+ It's not recommended to use ` matchLabelKeys ` with labels that might be updated directly on pods.
145
+ Even if you edit the pod's label that is specified at ` matchLabelKeys ` ** directly** , (that is, not via a deployment),
146
+ kube-apiserver doesn't reflect the label update onto the merged ` labelSelector ` .
147
+ {{< /caution >}}
141
148
142
149
With ` matchLabelKeys ` , you don't need to update the ` pod.spec ` between different revisions.
143
150
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
151
+ revisions. For example, if you are configuring a Deployment, you can use the label keyed with
146
152
[ pod-template-hash] ( /docs/concepts/workloads/controllers/deployment/#pod-template-hash-label ) , which
147
153
is added automatically by the Deployment controller, to distinguish between different revisions
148
154
in a single Deployment.
0 commit comments