From 4b776b822c67cbab06ab4aa1bf756d1274b2482b 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 +++++ cluster-autoscaler/cloudprovider/gce/templates_test.go | 1 + 2 files changed, 6 insertions(+) diff --git a/cluster-autoscaler/cloudprovider/gce/templates.go b/cluster-autoscaler/cloudprovider/gce/templates.go index 94efd632f7..ca38d734b1 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 { @@ -211,6 +215,7 @@ func BuildGenericLabels(ref GceRef, machineType string, nodeName string, os Oper } result[apiv1.LabelZoneRegion] = ref.Zone[:ix] result[apiv1.LabelZoneFailureDomain] = 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 db8004bb34..df35f12dbc 100644 --- a/cluster-autoscaler/cloudprovider/gce/templates_test.go +++ b/cluster-autoscaler/cloudprovider/gce/templates_test.go @@ -168,6 +168,7 @@ func TestBuildGenericLabels(t *testing.T) { expectedLabels := map[string]string{ apiv1.LabelZoneRegion: "us-central1", apiv1.LabelZoneFailureDomain: "us-central1-b", + gceCSITopologyKeyZone: "us-central1-b", apiv1.LabelHostname: "sillyname", apiv1.LabelInstanceType: "n1-standard-8", kubeletapis.LabelArch: cloudprovider.DefaultArch, From 37abbbd12bd9b5716304d430f02e96b5d2f49c96 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 --- .../cloudprovider/gce/templates.go | 3 +++ .../cloudprovider/gce/templates_test.go | 21 +++++++++++-------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/cluster-autoscaler/cloudprovider/gce/templates.go b/cluster-autoscaler/cloudprovider/gce/templates.go index ca38d734b1..226690299a 100644 --- a/cluster-autoscaler/cloudprovider/gce/templates.go +++ b/cluster-autoscaler/cloudprovider/gce/templates.go @@ -209,12 +209,15 @@ func BuildGenericLabels(ref GceRef, machineType string, nodeName string, os Oper result[apiv1.LabelOSStable] = string(os) 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 df35f12dbc..012eb0d6ec 100644 --- a/cluster-autoscaler/cloudprovider/gce/templates_test.go +++ b/cluster-autoscaler/cloudprovider/gce/templates_test.go @@ -166,15 +166,18 @@ func TestBuildGenericLabels(t *testing.T) { for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { expectedLabels := map[string]string{ - apiv1.LabelZoneRegion: "us-central1", - apiv1.LabelZoneFailureDomain: "us-central1-b", - gceCSITopologyKeyZone: "us-central1-b", - apiv1.LabelHostname: "sillyname", - apiv1.LabelInstanceType: "n1-standard-8", - kubeletapis.LabelArch: cloudprovider.DefaultArch, - kubeletapis.LabelOS: tc.expectedOsLabel, - apiv1.LabelArchStable: cloudprovider.DefaultArch, - apiv1.LabelOSStable: tc.expectedOsLabel, + apiv1.LabelZoneRegion: "us-central1", + apiv1.LabelZoneRegionStable: "us-central1", + apiv1.LabelZoneFailureDomain: "us-central1-b", + apiv1.LabelZoneFailureDomainStable: "us-central1-b", + gceCSITopologyKeyZone: "us-central1-b", + apiv1.LabelHostname: "sillyname", + apiv1.LabelInstanceType: "n1-standard-8", + apiv1.LabelInstanceTypeStable: "n1-standard-8", + kubeletapis.LabelArch: cloudprovider.DefaultArch, + kubeletapis.LabelOS: tc.expectedOsLabel, + apiv1.LabelArchStable: cloudprovider.DefaultArch, + apiv1.LabelOSStable: tc.expectedOsLabel, } labels, err := BuildGenericLabels(GceRef{ Name: "kubernetes-minion-group",