From 5a1b0a8bf87af08204c3a083ed7ff7352af60426 Mon Sep 17 00:00:00 2001 From: Michelle Au Date: Fri, 20 Dec 2019 14:07:04 -0800 Subject: [PATCH 1/2] Add GCE PD CSI zone topology key to node template. CSI drivers use their own topology keys instead of Kubernetes labels --- cluster-autoscaler/cloudprovider/gce/templates.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cluster-autoscaler/cloudprovider/gce/templates.go b/cluster-autoscaler/cloudprovider/gce/templates.go index 8d261e97b7..841e17d085 100644 --- a/cluster-autoscaler/cloudprovider/gce/templates.go +++ b/cluster-autoscaler/cloudprovider/gce/templates.go @@ -37,6 +37,10 @@ import ( // GceTemplateBuilder builds templates for GCE nodes. type GceTemplateBuilder struct{} +// TODO: This should be imported from sigs.k8s.io/gcp-compute-persistent-disk-csi-driver/pkg/common/constants.go +// This key is applicable to both GCE and GKE +const gceCSITopologyKeyZone = "topology.gke.io/zone" + func (t *GceTemplateBuilder) getAcceleratorCount(accelerators []*gce.AcceleratorConfig) int64 { count := int64(0) for _, accelerator := range accelerators { @@ -186,6 +190,7 @@ func BuildGenericLabels(ref GceRef, machineType string, nodeName string) (map[st } result[apiv1.LabelZoneRegion] = ref.Zone[:ix] result[apiv1.LabelZoneFailureDomain] = ref.Zone + result[gceCSITopologyKeyZone] = ref.Zone result[apiv1.LabelHostname] = nodeName return result, nil } From 2a2c575a4d412a9001306f6ad2be5b172457fe21 Mon Sep 17 00:00:00 2001 From: Yaroslava Serdiuk Date: Wed, 25 Nov 2020 16:48:24 +0000 Subject: [PATCH 2/2] update generic labels for GCE --- cluster-autoscaler/cloudprovider/gce/templates.go | 3 +++ cluster-autoscaler/cloudprovider/gce/templates_test.go | 3 +++ 2 files changed, 6 insertions(+) diff --git a/cluster-autoscaler/cloudprovider/gce/templates.go b/cluster-autoscaler/cloudprovider/gce/templates.go index 841e17d085..63a73a4ed3 100644 --- a/cluster-autoscaler/cloudprovider/gce/templates.go +++ b/cluster-autoscaler/cloudprovider/gce/templates.go @@ -184,12 +184,15 @@ func BuildGenericLabels(ref GceRef, machineType string, nodeName string) (map[st result[kubeletapis.LabelOS] = cloudprovider.DefaultOS result[apiv1.LabelInstanceType] = machineType + result[apiv1.LabelInstanceTypeStable] = machineType ix := strings.LastIndex(ref.Zone, "-") if ix == -1 { return nil, fmt.Errorf("unexpected zone: %s", ref.Zone) } result[apiv1.LabelZoneRegion] = ref.Zone[:ix] + result[apiv1.LabelZoneRegionStable] = ref.Zone[:ix] result[apiv1.LabelZoneFailureDomain] = ref.Zone + result[apiv1.LabelZoneFailureDomainStable] = ref.Zone result[gceCSITopologyKeyZone] = ref.Zone result[apiv1.LabelHostname] = nodeName return result, nil diff --git a/cluster-autoscaler/cloudprovider/gce/templates_test.go b/cluster-autoscaler/cloudprovider/gce/templates_test.go index e289dba5ec..ea0b05a782 100644 --- a/cluster-autoscaler/cloudprovider/gce/templates_test.go +++ b/cluster-autoscaler/cloudprovider/gce/templates_test.go @@ -134,7 +134,10 @@ func TestBuildGenericLabels(t *testing.T) { "n1-standard-8", "sillyname") assert.Nil(t, err) assert.Equal(t, "us-central1", labels[apiv1.LabelZoneRegion]) + assert.Equal(t, "us-central1", labels[apiv1.LabelZoneRegionStable]) assert.Equal(t, "us-central1-b", labels[apiv1.LabelZoneFailureDomain]) + assert.Equal(t, "us-central1-b", labels[apiv1.LabelZoneFailureDomainStable]) + assert.Equal(t, "us-central1-b", labels[gceCSITopologyKeyZone]) assert.Equal(t, "sillyname", labels[apiv1.LabelHostname]) assert.Equal(t, "n1-standard-8", labels[apiv1.LabelInstanceType]) assert.Equal(t, cloudprovider.DefaultArch, labels[kubeletapis.LabelArch])