Merge pull request #96311 from thockin/kep-1659-topology-labels

Convert users of old failure-domain labels to new
This commit is contained in:
Kubernetes Prow Robot 2020-12-08 17:28:27 -08:00 committed by GitHub
commit 83b2c7a1bf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 65 additions and 53 deletions

View File

@ -11060,8 +11060,8 @@ func TestValidateServiceCreate(t *testing.T) {
tweakSvc: func(s *core.Service) {
s.Spec.TopologyKeys = []string{
"kubernetes.io/hostname",
"failure-domain.beta.kubernetes.io/zone",
"failure-domain.beta.kubernetes.io/region",
"topology.kubernetes.io/zone",
"topology.kubernetes.io/region",
v1.TopologyKeyAny,
}
},
@ -11089,7 +11089,7 @@ func TestValidateServiceCreate(t *testing.T) {
s.Spec.TopologyKeys = []string{
"kubernetes.io/hostname",
v1.TopologyKeyAny,
"failure-domain.beta.kubernetes.io/zone",
"topology.kubernetes.io/zone",
}
},
numErrs: 1,
@ -11100,7 +11100,7 @@ func TestValidateServiceCreate(t *testing.T) {
s.Spec.TopologyKeys = []string{
"kubernetes.io/hostname",
"kubernetes.io/hostname",
"failure-domain.beta.kubernetes.io/zone",
"topology.kubernetes.io/zone",
}
},
numErrs: 1,

View File

@ -727,7 +727,7 @@ func BenchmarkTestPodTopologySpreadScore(b *testing.B) {
{
name: "1000nodes/single-constraint-zone",
pod: st.MakePod().Name("p").Label("foo", "").
SpreadConstraint(1, v1.LabelFailureDomainBetaZone, v1.ScheduleAnyway, st.MakeLabelSelector().Exists("foo").Obj()).
SpreadConstraint(1, v1.LabelTopologyZone, v1.ScheduleAnyway, st.MakeLabelSelector().Exists("foo").Obj()).
Obj(),
existingPodsNum: 10000,
allNodesNum: 1000,
@ -745,7 +745,7 @@ func BenchmarkTestPodTopologySpreadScore(b *testing.B) {
{
name: "1000nodes/two-Constraints-zone-node",
pod: st.MakePod().Name("p").Label("foo", "").Label("bar", "").
SpreadConstraint(1, v1.LabelFailureDomainBetaZone, v1.ScheduleAnyway, st.MakeLabelSelector().Exists("foo").Obj()).
SpreadConstraint(1, v1.LabelTopologyZone, v1.ScheduleAnyway, st.MakeLabelSelector().Exists("foo").Obj()).
SpreadConstraint(1, v1.LabelHostname, v1.ScheduleAnyway, st.MakeLabelSelector().Exists("bar").Obj()).
Obj(),
existingPodsNum: 10000,

View File

@ -441,7 +441,7 @@ func TestZoneSelectorSpreadPriority(t *testing.T) {
buildNodeLabels := func(failureDomain string) map[string]string {
labels := map[string]string{
v1.LabelFailureDomainBetaZone: failureDomain,
v1.LabelTopologyZone: failureDomain,
}
return labels
}

View File

@ -1572,8 +1572,8 @@ func TestSchedulerCache_updateNodeInfoSnapshotList(t *testing.T) {
ObjectMeta: metav1.ObjectMeta{
Name: fmt.Sprintf("node-%d", i),
Labels: map[string]string{
v1.LabelFailureDomainBetaRegion: fmt.Sprintf("region-%d", zone),
v1.LabelFailureDomainBetaZone: fmt.Sprintf("zone-%d", zone),
v1.LabelTopologyRegion: fmt.Sprintf("region-%d", zone),
v1.LabelTopologyZone: fmt.Sprintf("zone-%d", zone),
},
},
})

View File

@ -36,7 +36,7 @@ var allNodes = []*v1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "node-1",
Labels: map[string]string{
v1.LabelFailureDomainBetaRegion: "region-1",
v1.LabelTopologyRegion: "region-1",
},
},
},
@ -45,7 +45,7 @@ var allNodes = []*v1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "node-2",
Labels: map[string]string{
v1.LabelFailureDomainBetaZone: "zone-2",
v1.LabelTopologyZone: "zone-2",
},
},
},
@ -54,8 +54,8 @@ var allNodes = []*v1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "node-3",
Labels: map[string]string{
v1.LabelFailureDomainBetaRegion: "region-1",
v1.LabelFailureDomainBetaZone: "zone-2",
v1.LabelTopologyRegion: "region-1",
v1.LabelTopologyZone: "zone-2",
},
},
},
@ -64,8 +64,8 @@ var allNodes = []*v1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "node-4",
Labels: map[string]string{
v1.LabelFailureDomainBetaRegion: "region-1",
v1.LabelFailureDomainBetaZone: "zone-2",
v1.LabelTopologyRegion: "region-1",
v1.LabelTopologyZone: "zone-2",
},
},
},
@ -74,8 +74,8 @@ var allNodes = []*v1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "node-5",
Labels: map[string]string{
v1.LabelFailureDomainBetaRegion: "region-1",
v1.LabelFailureDomainBetaZone: "zone-3",
v1.LabelTopologyRegion: "region-1",
v1.LabelTopologyZone: "zone-3",
},
},
},
@ -84,8 +84,8 @@ var allNodes = []*v1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "node-6",
Labels: map[string]string{
v1.LabelFailureDomainBetaRegion: "region-2",
v1.LabelFailureDomainBetaZone: "zone-2",
v1.LabelTopologyRegion: "region-2",
v1.LabelTopologyZone: "zone-2",
},
},
},
@ -94,8 +94,8 @@ var allNodes = []*v1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "node-7",
Labels: map[string]string{
v1.LabelFailureDomainBetaRegion: "region-2",
v1.LabelFailureDomainBetaZone: "zone-2",
v1.LabelTopologyRegion: "region-2",
v1.LabelTopologyZone: "zone-2",
},
},
},
@ -104,8 +104,8 @@ var allNodes = []*v1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "node-8",
Labels: map[string]string{
v1.LabelFailureDomainBetaRegion: "region-2",
v1.LabelFailureDomainBetaZone: "zone-2",
v1.LabelTopologyRegion: "region-2",
v1.LabelTopologyZone: "zone-2",
},
},
},
@ -282,8 +282,8 @@ func TestNodeTree_UpdateNode(t *testing.T) {
ObjectMeta: metav1.ObjectMeta{
Name: "node-0",
Labels: map[string]string{
v1.LabelFailureDomainBetaRegion: "region-1",
v1.LabelFailureDomainBetaZone: "zone-2",
v1.LabelTopologyRegion: "region-1",
v1.LabelTopologyZone: "zone-2",
},
},
},
@ -302,8 +302,8 @@ func TestNodeTree_UpdateNode(t *testing.T) {
ObjectMeta: metav1.ObjectMeta{
Name: "node-0",
Labels: map[string]string{
v1.LabelFailureDomainBetaRegion: "region-1",
v1.LabelFailureDomainBetaZone: "zone-2",
v1.LabelTopologyRegion: "region-1",
v1.LabelTopologyZone: "zone-2",
},
},
},
@ -318,8 +318,8 @@ func TestNodeTree_UpdateNode(t *testing.T) {
ObjectMeta: metav1.ObjectMeta{
Name: "node-new",
Labels: map[string]string{
v1.LabelFailureDomainBetaRegion: "region-1",
v1.LabelFailureDomainBetaZone: "zone-2",
v1.LabelTopologyRegion: "region-1",
v1.LabelTopologyZone: "zone-2",
},
},
},

View File

@ -187,13 +187,14 @@ func GetZoneKey(node *v1.Node) string {
return ""
}
// TODO: prefer stable labels for zone in v1.18
// TODO: "failure-domain.beta..." names are deprecated, but will
// stick around a long time due to existing on old extant objects like PVs.
// Maybe one day we can stop considering them (see #88493).
zone, ok := labels[v1.LabelFailureDomainBetaZone]
if !ok {
zone, _ = labels[v1.LabelTopologyZone]
}
// TODO: prefer stable labels for region in v1.18
region, ok := labels[v1.LabelFailureDomainBetaRegion]
if !ok {
region, _ = labels[v1.LabelTopologyRegion]

View File

@ -19,16 +19,21 @@ package v1
const (
LabelHostname = "kubernetes.io/hostname"
LabelFailureDomainBetaZone = "failure-domain.beta.kubernetes.io/zone"
LabelFailureDomainBetaRegion = "failure-domain.beta.kubernetes.io/region"
LabelTopologyZone = "topology.kubernetes.io/zone"
LabelTopologyRegion = "topology.kubernetes.io/region"
LabelTopologyZone = "topology.kubernetes.io/zone"
LabelTopologyRegion = "topology.kubernetes.io/region"
// Legacy names for compat.
LabelZoneFailureDomain = LabelFailureDomainBetaZone // deprecated, remove after 1.20
LabelZoneRegion = LabelFailureDomainBetaRegion // deprecated, remove after 1.20
LabelZoneFailureDomainStable = LabelTopologyZone
LabelZoneRegionStable = LabelTopologyRegion
// These label have been deprecated since 1.17, but will be supported for
// the foreseeable future, to accommodate things like long-lived PVs that
// use them. New users should prefer the "topology.kubernetes.io/*"
// equivalents.
LabelFailureDomainBetaZone = "failure-domain.beta.kubernetes.io/zone" // deprecated
LabelFailureDomainBetaRegion = "failure-domain.beta.kubernetes.io/region" // deprecated
// Retained for compat when vendored. Do not use these consts in new code.
LabelZoneFailureDomain = LabelFailureDomainBetaZone // deprecated
LabelZoneRegion = LabelFailureDomainBetaRegion // deprecated
LabelZoneFailureDomainStable = LabelTopologyZone // deprecated
LabelZoneRegionStable = LabelTopologyRegion // deprecated
LabelInstanceType = "beta.kubernetes.io/instance-type"
LabelInstanceTypeStable = "node.kubernetes.io/instance-type"

View File

@ -15,6 +15,8 @@ metadata:
cloud.google.com/gke-os-distribution: cos
failure-domain.beta.kubernetes.io/region: us-central1
failure-domain.beta.kubernetes.io/zone: us-central1-b
topology.kubernetes.io/region: us-central1
topology.kubernetes.io/zone: us-central1-b
kubernetes.io/hostname: node-default-pool-something
name: node-default-pool-something
resourceVersion: "211582541"

View File

@ -163,6 +163,8 @@ func RestartNodes(c clientset.Interface, nodes []v1.Node) error {
zone := framework.TestContext.CloudConfig.Zone
if z, ok := node.Labels[v1.LabelFailureDomainBetaZone]; ok {
zone = z
} else if z, ok := node.Labels[v1.LabelTopologyZone]; ok {
zone = z
}
nodeNamesByZone[zone] = append(nodeNamesByZone[zone], node.Name)
}

View File

@ -182,6 +182,8 @@ var _ = SIGDescribe("Firewall rule", func() {
zone := cloudConfig.Zone
if zoneInLabel, ok := nodeList.Items[0].Labels[v1.LabelFailureDomainBetaZone]; ok {
zone = zoneInLabel
} else if zoneInLabel, ok := nodeList.Items[0].Labels[v1.LabelTopologyZone]; ok {
zone = zoneInLabel
}
removedTags := gce.SetInstanceTags(cloudConfig, nodesNames[0], zone, []string{})
defer func() {

View File

@ -23,7 +23,7 @@ import (
"github.com/onsi/ginkgo"
"github.com/onsi/gomega"
"k8s.io/api/core/v1"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/util/intstr"
@ -120,13 +120,13 @@ func SpreadServiceOrFail(f *framework.Framework, replicaCount int, image string)
// Find the name of the zone in which a Node is running
func getZoneNameForNode(node v1.Node) (string, error) {
for key, value := range node.Labels {
if key == v1.LabelFailureDomainBetaZone {
return value, nil
}
if z, ok := node.Labels[v1.LabelFailureDomainBetaZone]; ok {
return z, nil
} else if z, ok := node.Labels[v1.LabelTopologyZone]; ok {
return z, nil
}
return "", fmt.Errorf("node %s doesn't have zone label %s",
node.Name, v1.LabelFailureDomainBetaZone)
return "", fmt.Errorf("node %s doesn't have zone label %s or %s",
node.Name, v1.LabelFailureDomainBetaZone, v1.LabelTopologyZone)
}
// Return the number of zones in which we have nodes in this cluster.

View File

@ -181,7 +181,7 @@ func TestTaintBasedEvictions(t *testing.T) {
nodes = append(nodes, &v1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: fmt.Sprintf("node-%d", i),
Labels: map[string]string{v1.LabelFailureDomainBetaRegion: "region1", v1.LabelFailureDomainBetaZone: "zone1"},
Labels: map[string]string{v1.LabelTopologyRegion: "region1", v1.LabelTopologyZone: "zone1"},
},
Spec: v1.NodeSpec{},
Status: v1.NodeStatus{

View File

@ -171,7 +171,7 @@
countParam: $initNodes
nodeTemplatePath: config/node-default.yaml
labelNodePrepareStrategy:
labelKey: "failure-domain.beta.kubernetes.io/zone"
labelKey: "topology.kubernetes.io/zone"
labelValues: ["zone1"]
- opcode: createPods
countParam: $initPods
@ -254,7 +254,7 @@
countParam: $initNodes
nodeTemplatePath: config/node-default.yaml
labelNodePrepareStrategy:
labelKey: "failure-domain.beta.kubernetes.io/zone"
labelKey: "topology.kubernetes.io/zone"
labelValues: ["zone1"]
- opcode: createPods
countParam: $initPods

View File

@ -8,7 +8,7 @@ spec:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: failure-domain.beta.kubernetes.io/zone
- key: topology.kubernetes.io/zone
operator: In
values:
- zone1

View File

@ -11,7 +11,7 @@ spec:
- labelSelector:
matchLabels:
color: blue
topologyKey: failure-domain.beta.kubernetes.io/zone
topologyKey: topology.kubernetes.io/zone
namespaces: ["sched-test", "sched-setup"]
containers:
- image: k8s.gcr.io/pause:3.2

View File

@ -136,7 +136,7 @@ func BenchmarkSchedulingWaitForFirstConsumerPVs(b *testing.B) {
}
basePod := makeBasePod()
testStrategy := testutils.NewCreatePodWithPersistentVolumeWithFirstConsumerStrategy(gceVolumeFactory, basePod)
nodeStrategy := testutils.NewLabelNodePrepareStrategy(v1.LabelFailureDomainBetaZone, "zone1")
nodeStrategy := testutils.NewLabelNodePrepareStrategy(v1.LabelTopologyZone, "zone1")
for _, test := range tests {
name := fmt.Sprintf("%vNodes/%vPods", test.nodes, test.existingPods)
b.Run(name, func(b *testing.B) {