Write events when autoprovisioned nodegroup is created / deleted

This commit is contained in:
Maciej Pytel 2017-10-25 14:30:39 +02:00
parent c7aa56a82a
commit 9c2ebccbfe
4 changed files with 17 additions and 3 deletions

View File

@ -26,6 +26,7 @@ import (
"k8s.io/autoscaler/cluster-autoscaler/cloudprovider"
"k8s.io/autoscaler/cluster-autoscaler/clusterstate"
"k8s.io/autoscaler/cluster-autoscaler/clusterstate/utils"
"k8s.io/autoscaler/cluster-autoscaler/config"
"k8s.io/autoscaler/cluster-autoscaler/metrics"
"k8s.io/autoscaler/cluster-autoscaler/simulator"
@ -821,7 +822,7 @@ func hasNoScaleDownAnnotation(node *apiv1.Node) bool {
return node.Annotations[ScaleDownDisabledKey] == "true"
}
func cleanUpNodeAutoprovisionedGroups(cloudProvider cloudprovider.CloudProvider) error {
func cleanUpNodeAutoprovisionedGroups(cloudProvider cloudprovider.CloudProvider, logRecorder *utils.LogEventRecorder) error {
nodeGroups := cloudProvider.NodeGroups()
for _, nodeGroup := range nodeGroups {
if !nodeGroup.Autoprovisioned() {
@ -832,9 +833,14 @@ func cleanUpNodeAutoprovisionedGroups(cloudProvider cloudprovider.CloudProvider)
return err
}
if size == 0 {
ngId := nodeGroup.Id()
if err := nodeGroup.Delete(); err != nil {
logRecorder.Eventf(apiv1.EventTypeWarning, "FailedToDeleteNodeGroup",
"NodeAutoprovisioning: attempt to delete node group %v failed: %v", ngId, err)
return err
}
logRecorder.Eventf(apiv1.EventTypeNormal, "DeletedNodeGroup",
"NodeAutoprovisioning: removed node group %v", ngId)
}
}
return nil

View File

@ -1114,7 +1114,10 @@ func TestCleanUpNodeAutoprovisionedGroups(t *testing.T) {
provider.AddNode("ng3", n1)
assert.NotNil(t, provider)
assert.NoError(t, cleanUpNodeAutoprovisionedGroups(provider))
fakeClient := &fake.Clientset{}
fakeRecorder := kube_util.CreateEventRecorder(fakeClient)
fakeLogRecorder, _ := utils.NewStatusMapRecorder(fakeClient, "kube-system", fakeRecorder, false)
assert.NoError(t, cleanUpNodeAutoprovisionedGroups(provider, fakeLogRecorder))
}
func TestCalculateCoresAndMemoryTotal(t *testing.T) {

View File

@ -214,6 +214,8 @@ func ScaleUp(context *AutoscalingContext, unschedulablePods []*apiv1.Pod, nodes
oldId := bestOption.NodeGroup.Id()
err := bestOption.NodeGroup.Create()
if err != nil {
context.LogRecorder.Eventf(apiv1.EventTypeWarning, "FailedToCreateNodeGroup",
"NodeAutoprovisioning: attempt to create node group %v failed: %v", oldId, err)
return false, errors.ToAutoscalerError(errors.CloudProviderError, err)
}
newId := bestOption.NodeGroup.Id()
@ -224,6 +226,9 @@ func ScaleUp(context *AutoscalingContext, unschedulablePods []*apiv1.Pod, nodes
nodeInfos[newId] = nodeInfos[oldId]
delete(nodeInfos, oldId)
}
context.LogRecorder.Eventf(apiv1.EventTypeNormal, "CreatedNodeGroup",
"NodeAutoprovisioning: created new node group %v", newId)
}
}

View File

@ -303,7 +303,7 @@ func (a *StaticAutoscaler) RunOnce(currentTime time.Time) errors.AutoscalerError
// We want to delete unneeded Node Groups only if there was no recent scale up,
// and there is no current delete in progress and there was no recent errors.
if a.AutoscalingContext.NodeAutoprovisioningEnabled {
err := cleanUpNodeAutoprovisionedGroups(a.AutoscalingContext.CloudProvider)
err := cleanUpNodeAutoprovisionedGroups(a.AutoscalingContext.CloudProvider, a.AutoscalingContext.LogRecorder)
if err != nil {
glog.Warningf("Failed to clean up unneded node groups: %v", err)
}