@@ -115,6 +115,13 @@ func (aws *awsCloudProvider) NodeGroupForNode(node *apiv1.Node) (cloudprovider.N
115
115
klog .Warningf ("Node %v has no providerId" , node .Name )
116
116
return nil , nil
117
117
}
118
+
119
+ // Skip SageMaker instances
120
+ if strings .Contains (node .Spec .ProviderID , "/sagemaker" ) {
121
+ klog .V (4 ).Infof ("Skipping SageMaker node %s" , node .Name )
122
+ return nil , nil
123
+ }
124
+
118
125
ref , err := AwsRefFromProviderId (node .Spec .ProviderID )
119
126
if err != nil {
120
127
// Dropping this into V as it will be noisy with many Hybrid Nodes
@@ -143,6 +150,11 @@ func (aws *awsCloudProvider) HasInstance(node *apiv1.Node) (bool, error) {
143
150
return true , cloudprovider .ErrNotImplemented
144
151
}
145
152
153
+ // Skip SageMaker instances
154
+ if strings .Contains (node .Spec .ProviderID , "/sagemaker" ) {
155
+ return true , cloudprovider .ErrNotImplemented
156
+ }
157
+
146
158
// avoid log spam for not autoscaled asgs:
147
159
// Nodes that belong to an asg that is not autoscaled will not be found in the asgCache below,
148
160
// so do not trigger warning spam by returning an error from being unable to find them.
@@ -209,6 +221,14 @@ var validAwsRefIdRegex = regexp.MustCompile(fmt.Sprintf(`^aws\:\/\/\/[-0-9a-z]*\
209
221
// AwsRefFromProviderId creates AwsInstanceRef object from provider id which
210
222
// must be in format: aws:///zone/name
211
223
func AwsRefFromProviderId (id string ) (* AwsInstanceRef , error ) {
224
+ // Special case for SageMaker format: aws:///<region>/sagemaker/...
225
+ if strings .HasPrefix (id , "aws:///" ) && strings .Contains (id , "/sagemaker" ) {
226
+ return & AwsInstanceRef {
227
+ ProviderID : id ,
228
+ Name : "sagemaker-node" ,
229
+ }, nil
230
+ }
231
+
212
232
if validAwsRefIdRegex .FindStringSubmatch (id ) == nil {
213
233
return nil , fmt .Errorf ("wrong id: expected format aws:///<zone>/<name>, got %v" , id )
214
234
}
@@ -313,6 +333,11 @@ func (ng *AwsNodeGroup) DecreaseTargetSize(delta int) error {
313
333
314
334
// Belongs returns true if the given node belongs to the NodeGroup.
315
335
func (ng * AwsNodeGroup ) Belongs (node * apiv1.Node ) (bool , error ) {
336
+ // Skip SageMaker instances
337
+ if strings .Contains (node .Spec .ProviderID , "/sagemaker" ) {
338
+ return false , nil
339
+ }
340
+
316
341
ref , err := AwsRefFromProviderId (node .Spec .ProviderID )
317
342
if err != nil {
318
343
return false , err
0 commit comments