makes sure all nodes belong to the node group before removement.
This commit is contained in:
parent
91c57962cd
commit
83c6c21853
|
|
@ -20,6 +20,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
apiv1 "k8s.io/api/core/v1"
|
apiv1 "k8s.io/api/core/v1"
|
||||||
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
"k8s.io/autoscaler/cluster-autoscaler/cloudprovider"
|
"k8s.io/autoscaler/cluster-autoscaler/cloudprovider"
|
||||||
huaweicloudsdkasmodel "k8s.io/autoscaler/cluster-autoscaler/cloudprovider/huaweicloud/huaweicloud-sdk-go-v3/services/as/v1/model"
|
huaweicloudsdkasmodel "k8s.io/autoscaler/cluster-autoscaler/cloudprovider/huaweicloud/huaweicloud-sdk-go-v3/services/as/v1/model"
|
||||||
"k8s.io/klog/v2"
|
"k8s.io/klog/v2"
|
||||||
|
|
@ -98,13 +99,24 @@ func (asg *AutoScalingGroup) DeleteNodes(nodes []*apiv1.Node) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
instanceIds := make([]string, 0, len(instances))
|
instanceSet := sets.NewString()
|
||||||
for _, instance := range instances {
|
for _, instance := range instances {
|
||||||
for _, n := range nodes {
|
instanceSet.Insert(instance.Id)
|
||||||
if n.Spec.ProviderID == instance.Id {
|
}
|
||||||
instanceIds = append(instanceIds, instance.Id)
|
|
||||||
}
|
instanceIds := make([]string, 0, len(instances))
|
||||||
|
for _, node := range nodes {
|
||||||
|
providerID := node.Spec.ProviderID
|
||||||
|
|
||||||
|
// If one of the nodes not belongs to this auto scaling group, means there is something wrong happened,
|
||||||
|
// so, we should reject the whole deleting request.
|
||||||
|
if !instanceSet.Has(providerID) {
|
||||||
|
klog.Errorf("delete node not belongs this node group is not allowed. group: %s, node: %s", asg.groupID, providerID)
|
||||||
|
return fmt.Errorf("node does not belong to this node group")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
klog.V(1).Infof("going to remove node from scaling group. group: %s, node: %s", asg.groupID, providerID)
|
||||||
|
instanceIds = append(instanceIds, providerID)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = asg.cloudServiceManager.DeleteScalingInstances(asg.groupID, instanceIds)
|
err = asg.cloudServiceManager.DeleteScalingInstances(asg.groupID, instanceIds)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue