...
1
16
17 package nodeshutdown
18
19 import (
20 "time"
21
22 v1 "k8s.io/api/core/v1"
23 "k8s.io/client-go/tools/record"
24 "k8s.io/klog/v2"
25 kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
26 "k8s.io/kubernetes/pkg/kubelet/eviction"
27 "k8s.io/kubernetes/pkg/kubelet/lifecycle"
28 "k8s.io/kubernetes/pkg/kubelet/prober"
29 "k8s.io/utils/clock"
30 )
31
32
33 type Manager interface {
34 Admit(attrs *lifecycle.PodAdmitAttributes) lifecycle.PodAdmitResult
35 Start() error
36 ShutdownStatus() error
37 }
38
39
40 type Config struct {
41 Logger klog.Logger
42 ProbeManager prober.Manager
43 Recorder record.EventRecorder
44 NodeRef *v1.ObjectReference
45 GetPodsFunc eviction.ActivePodsFunc
46 KillPodFunc eviction.KillPodFunc
47 SyncNodeStatusFunc func()
48 ShutdownGracePeriodRequested time.Duration
49 ShutdownGracePeriodCriticalPods time.Duration
50 ShutdownGracePeriodByPodPriority []kubeletconfig.ShutdownGracePeriodByPodPriority
51 StateDirectory string
52 Clock clock.Clock
53 }
54
55
56 type managerStub struct{}
57
58
59 func (managerStub) Admit(attrs *lifecycle.PodAdmitAttributes) lifecycle.PodAdmitResult {
60 return lifecycle.PodAdmitResult{Admit: true}
61 }
62
63
64 func (managerStub) Start() error {
65 return nil
66 }
67
68
69 func (managerStub) ShutdownStatus() error {
70 return nil
71 }
72
View as plain text