diff --git a/kwok/cloudprovider/cloudprovider.go b/kwok/cloudprovider/cloudprovider.go index 381fc06b82..1d9c4a8c1e 100644 --- a/kwok/cloudprovider/cloudprovider.go +++ b/kwok/cloudprovider/cloudprovider.go @@ -211,14 +211,17 @@ func addInstanceLabels(labels map[string]string, instanceType *cloudprovider.Ins ret[r.Key] = r.Values()[0] } } + for _, r := range offering.Requirements { + if r.Len() == 1 && r.Operator() == corev1.NodeSelectorOpIn { + ret[r.Key] = r.Values()[0] + } + } // add in github.com/awslabs/eks-node-viewer label so that it shows up. ret[v1alpha1.NodeViewerLabelKey] = fmt.Sprintf("%f", offering.Price) // Kwok has some scalability limitations. // Randomly add each new node to one of the pre-created kwokPartitions. ret[v1alpha1.KwokPartitionLabelKey] = lo.Sample(kwokPartitions) - ret[v1.CapacityTypeLabelKey] = offering.Requirements.Get(v1.CapacityTypeLabelKey).Any() - ret[corev1.LabelTopologyZone] = offering.Requirements.Get(corev1.LabelTopologyZone).Any() ret[corev1.LabelHostname] = nodeClaim.Name ret[v1alpha1.KwokLabelKey] = v1alpha1.KwokLabelValue diff --git a/kwok/cloudprovider/helpers.go b/kwok/cloudprovider/helpers.go index dfe17140c9..a7b6b77849 100644 --- a/kwok/cloudprovider/helpers.go +++ b/kwok/cloudprovider/helpers.go @@ -169,6 +169,15 @@ func newInstanceType(options InstanceTypeOptions) *cloudprovider.InstanceType { return req.Values }))) + for _, offering := range options.Offerings { + for _, requirement := range offering.Requirements { + v1.WellKnownLabels = v1.WellKnownLabels.Insert(requirement.Key) + } + for _, requirement := range offering.Offering.Requirements { + v1.WellKnownLabels = v1.WellKnownLabels.Insert(requirement.Key) + } + } + requirements := scheduling.NewRequirements( scheduling.NewRequirement(corev1.LabelInstanceTypeStable, corev1.NodeSelectorOpIn, options.Name), scheduling.NewRequirement(corev1.LabelArchStable, corev1.NodeSelectorOpIn, options.Architecture),