Merge pull request #49976 from aveshagarwal/master-pod-affinities-topology-key
Automatic merge from submit-queue (batch tested with PRs 50531, 50853, 49976, 50939, 50607) Do not allow empty topology key for pod affinities. **What this PR does / why we need it**: This PR do not allow empty topology key for all 4 pod affinities. **Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes # **Special notes for your reviewer**: **Release note**: ```release-note Affinity in annotations alpha feature is no longer supported in 1.8. Anyone upgrading from 1.7 with AffinityInAnnotation feature enabled must ensure pods (specifically with pod anti-affinity PreferredDuringSchedulingIgnoredDuringExecution) with empty TopologyKey fields must be removed before upgrading to 1.8. ``` @kubernetes/sig-scheduling-bugs @bsalamat @davidopp
This commit is contained in:
@@ -4747,8 +4747,8 @@ func TestValidatePod(t *testing.T) {
|
||||
}),
|
||||
},
|
||||
},
|
||||
"invalid pod affinity, empty topologyKey is not allowed for hard pod affinity": {
|
||||
expectedError: "can only be empty for PreferredDuringScheduling pod anti affinity",
|
||||
"invalid hard pod affinity, empty topologyKey is not allowed for hard pod affinity": {
|
||||
expectedError: "can not be empty",
|
||||
spec: api.Pod{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "123",
|
||||
@@ -4774,8 +4774,8 @@ func TestValidatePod(t *testing.T) {
|
||||
}),
|
||||
},
|
||||
},
|
||||
"invalid pod anti-affinity, empty topologyKey is not allowed for hard pod anti-affinity": {
|
||||
expectedError: "can only be empty for PreferredDuringScheduling pod anti affinity",
|
||||
"invalid hard pod anti-affinity, empty topologyKey is not allowed for hard pod anti-affinity": {
|
||||
expectedError: "can not be empty",
|
||||
spec: api.Pod{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "123",
|
||||
@@ -4801,8 +4801,8 @@ func TestValidatePod(t *testing.T) {
|
||||
}),
|
||||
},
|
||||
},
|
||||
"invalid pod anti-affinity, empty topologyKey is not allowed for soft pod affinity": {
|
||||
expectedError: "can only be empty for PreferredDuringScheduling pod anti affinity",
|
||||
"invalid soft pod affinity, empty topologyKey is not allowed for soft pod affinity": {
|
||||
expectedError: "can not be empty",
|
||||
spec: api.Pod{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "123",
|
||||
@@ -4831,6 +4831,36 @@ func TestValidatePod(t *testing.T) {
|
||||
}),
|
||||
},
|
||||
},
|
||||
"invalid soft pod anti-affinity, empty topologyKey is not allowed for soft pod anti-affinity": {
|
||||
expectedError: "can not be empty",
|
||||
spec: api.Pod{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "123",
|
||||
Namespace: "ns",
|
||||
},
|
||||
Spec: validPodSpec(&api.Affinity{
|
||||
PodAntiAffinity: &api.PodAntiAffinity{
|
||||
PreferredDuringSchedulingIgnoredDuringExecution: []api.WeightedPodAffinityTerm{
|
||||
{
|
||||
Weight: 10,
|
||||
PodAffinityTerm: api.PodAffinityTerm{
|
||||
LabelSelector: &metav1.LabelSelector{
|
||||
MatchExpressions: []metav1.LabelSelectorRequirement{
|
||||
{
|
||||
Key: "key2",
|
||||
Operator: metav1.LabelSelectorOpNotIn,
|
||||
Values: []string{"value1", "value2"},
|
||||
},
|
||||
},
|
||||
},
|
||||
Namespaces: []string{"ns"},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}),
|
||||
},
|
||||
},
|
||||
"invalid toleration key": {
|
||||
expectedError: "spec.tolerations[0].key",
|
||||
spec: api.Pod{
|
||||
|
||||
Reference in New Issue
Block a user