Skip to content

Commit

Permalink
fix: Emit evictions as events (#2210)
Browse files Browse the repository at this point in the history
  • Loading branch information
ellistarn authored Jul 28, 2022
1 parent a01d89a commit 464aabc
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 3 deletions.
1 change: 1 addition & 0 deletions pkg/controllers/termination/eviction.go
Original file line number Diff line number Diff line change
Expand Up @@ -112,5 +112,6 @@ func (e *EvictionQueue) evict(ctx context.Context, nn types.NamespacedName) bool
logging.FromContext(ctx).Errorf("evicting pod, %s", err)
return false
}
e.recorder.EvictPod(&v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: nn.Name, Namespace: nn.Namespace}})
return true
}
9 changes: 9 additions & 0 deletions pkg/events/dedupe.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,15 @@ func (d *dedupe) NominatePod(pod *v1.Pod, node *v1.Node) {
d.rec.NominatePod(pod, node)
}

func (d *dedupe) EvictPod(pod *v1.Pod) {
key := fmt.Sprintf("evict-pod-%s", pod.Name)
if _, exists := d.cache.Get(key); exists {
return
}
d.cache.SetDefault(key, nil)
d.rec.EvictPod(pod)
}

func (d *dedupe) PodFailedToSchedule(pod *v1.Pod, err error) {
key := fmt.Sprintf("failed-to-schedule-%s-%s", pod.Name, err.Error())
if _, exists := d.cache.Get(key); exists {
Expand Down
8 changes: 7 additions & 1 deletion pkg/events/recorder.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ type Recorder interface {
// NominatePod is called when we have determined that a pod should schedule against an existing node and don't
// currently need to provision new capacity for the pod.
NominatePod(*v1.Pod, *v1.Node)
// EvictedPod is called when a pod is evicted
EvictPod(*v1.Pod)
// PodFailedToSchedule is called when a pod has failed to schedule entirely.
PodFailedToSchedule(*v1.Pod, error)
// NodeFailedToDrain is called when a pod causes a node draining to fail
Expand All @@ -40,7 +42,11 @@ func NewRecorder(rec record.EventRecorder) Recorder {
}

func (r recorder) NominatePod(pod *v1.Pod, node *v1.Node) {
r.rec.Eventf(pod, "Normal", "NominatePod", "Pod should schedule on %s", node.Name)
r.rec.Eventf(pod, "Normal", "Nominate", "Pod should schedule on %s", node.Name)
}

func (r recorder) EvictPod(pod *v1.Pod) {
r.rec.Eventf(pod, "Normal", "Evict", "Evicted pod")
}

func (r recorder) PodFailedToSchedule(pod *v1.Pod, err error) {
Expand Down
3 changes: 3 additions & 0 deletions pkg/test/eventrecorder.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ func (e *EventRecorder) NominatePod(pod *v1.Pod, node *v1.Node) {
defer e.mu.Unlock()
e.bindings = append(e.bindings, Binding{pod, node})
}

func (e *EventRecorder) EvictPod(pod *v1.Pod) {}

func (e *EventRecorder) PodFailedToSchedule(pod *v1.Pod, err error) {}

func (e *EventRecorder) NodeFailedToDrain(node *v1.Node, err error) {}
Expand Down
2 changes: 0 additions & 2 deletions test/suites/integration/cni_test.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package integration_test

import (
"fmt"

"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/ec2"
"github.com/aws/karpenter/pkg/apis/awsnodetemplate/v1alpha1"
Expand Down

0 comments on commit 464aabc

Please sign in to comment.