Commit Graph

13 Commits

Author SHA1 Message Date
Jason DeTiberus 1e0fe7c85d
Update group identifier to use for Cluster API annotations
- Also add backwards compatibility for the previously used deprecated annotations
2020-09-28 13:31:37 -04:00
Jason DeTiberus 5753f3f2ab
Add node autodiscovery to cluster-autoscaler clusterapi provider 2020-09-28 13:31:36 -04:00
Jason DeTiberus 9dc30d538c
Convert clusterapi provider to use unstructured
Remove internal types for Cluster API and replace with unstructured access
2020-09-28 13:31:35 -04:00
Kubernetes Prow Robot 72178ad66c
Merge pull request #3345 from detiber/backport3177
[CA-1.18] #3177 cherry-pick: Fix stale replicas issue with cluster-autoscaler CAPI provider
2020-07-29 04:55:48 -07:00
Michael McCune 60151cdde1
Improve delete node mechanisms in cluster-autoscaler CAPI provider
This change adds a function to remove the annotations associated with
marking a node for deletion. It also adds logic to unmark a node in the
event that an error is returned after the node has been annotated but
before it has been removed. In the case where a node cannot be removed
(eg due to minimum size), the node is unmarked before we return from the
error condition.
2020-07-23 15:16:22 -04:00
Enxebre 05ae2befc7
Compare against minSize in deleteNodes() in cluster-autoscaler CAPI
provider

When calling deleteNodes() we should fail early if the operation could delete nodes below the nodeGroup minSize().

This is one in a series of PR to mitigate kubernetes#3104
2020-07-23 15:15:29 -04:00
Enxebre bcdc2725eb
Get replicas always from API server for cluster-autoscaler CAPI provider
When getting Replicas() the local struct in the scalable resource might be stale. To mitigate possible side effects, we want always get a fresh replicas.

This is one in a series of PR to mitigate kubernetes#3104
2020-07-23 15:15:25 -04:00
Michael McCune 143877b835
Add mutex to DeleteNodes in cluster-autoscaler CAPI provider
This change adds a mutex to the MachineController structure which is
used to gate access to the DeleteNodes function.

This is one in a series of PRs to mitigate kubernetes#3104
2020-07-23 15:15:22 -04:00
Joel Speed 9738adbb51
Do not normalize Node IDs outside of CAPI provider 2020-06-03 10:28:57 -04:00
Andrew McDermott d9e3197daa Normalize providerID values
We index on providerID but it turns out that those values on node and
machine are not always consistent. Some encode region, some do not,
for example.

This commit normalizes all values through the normalizedProviderString().

To ensure that we catch all places I've introduced a new type and made
the find() functions take this new type in lieu of a string. Unit
tests have also been adjusted to introduce a 'test:///' prefix on the
providerID value to further validate the change.

This change allows CAPI to work out-of-the-box, assuming v1alpha2.

It's also reasonable to assert that this consistency should be
enforced elsewhere and to make this behaviour easily revertable I'm
leaving this as a separate commit in this patch series.
2020-03-10 10:59:05 +00:00
Joel Speed eae1579100 Ensure DeleteNodes doesn't delete a node twice 2020-03-10 10:59:05 +00:00
Enxebre 699c0b83b4 Let Nodes() return the list of all machines
The autoscaler expects provider implementations nodeGroups to implement the Nodes() function to return the number of instances belonging to the group regardless of they have become a kubernetes node or not.
This information is then used for instance to realise about unregistered nodes bf3a9fb52e/cluster-autoscaler/clusterstate/clusterstate.go (L307-L311)
2020-03-10 10:59:05 +00:00
Andrew McDermott 46bb9b4f29 cloudprovider/clusterapi: new provider
This adds a new cloudprovider based on the cluster-api project:

  https://github.com/kubernetes-sigs/cluster-api
2020-03-10 10:59:04 +00:00