mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-28 14:07:14 +00:00
Merge pull request #13397 from yujuhong/housekeeping
kubelet: define the housekeeping period
This commit is contained in:
commit
d923e61dda
@ -91,6 +91,10 @@ const (
|
|||||||
|
|
||||||
// system default DNS resolver configuration
|
// system default DNS resolver configuration
|
||||||
ResolvConfDefault = "/etc/resolv.conf"
|
ResolvConfDefault = "/etc/resolv.conf"
|
||||||
|
|
||||||
|
// Minimum period for performing global cleanup tasks, i.e., housekeeping
|
||||||
|
// will not be performed more than once per housekeepingMinimumPeriod.
|
||||||
|
housekeepingMinimumPeriod = time.Second * 2
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -1861,23 +1865,37 @@ func (kl *Kubelet) canAdmitPod(pods []*api.Pod, pod *api.Pod) (bool, string, str
|
|||||||
// state every sync-frequency seconds. Never returns.
|
// state every sync-frequency seconds. Never returns.
|
||||||
func (kl *Kubelet) syncLoop(updates <-chan PodUpdate, handler SyncHandler) {
|
func (kl *Kubelet) syncLoop(updates <-chan PodUpdate, handler SyncHandler) {
|
||||||
glog.Info("Starting kubelet main sync loop.")
|
glog.Info("Starting kubelet main sync loop.")
|
||||||
|
var housekeepingTimestamp time.Time
|
||||||
for {
|
for {
|
||||||
|
if !kl.containerRuntimeUp() {
|
||||||
|
time.Sleep(5 * time.Second)
|
||||||
|
glog.Infof("Skipping pod synchronization, container runtime is not up.")
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if !kl.doneNetworkConfigure() {
|
||||||
|
time.Sleep(5 * time.Second)
|
||||||
|
glog.Infof("Skipping pod synchronization, network is not configured")
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
// We don't want to perform housekeeping too often, so we set a minimum
|
||||||
|
// period for it. Housekeeping would be performed at least once every
|
||||||
|
// kl.resyncInterval, and *no* more than once every
|
||||||
|
// housekeepingMinimumPeriod.
|
||||||
|
// TODO (#13418): Investigate whether we can/should spawn a dedicated
|
||||||
|
// goroutine for housekeeping
|
||||||
|
if housekeepingTimestamp.IsZero() || time.Since(housekeepingTimestamp) > housekeepingMinimumPeriod {
|
||||||
|
glog.V(4).Infof("SyncLoop (housekeeping)")
|
||||||
|
if err := handler.HandlePodCleanups(); err != nil {
|
||||||
|
glog.Errorf("Failed cleaning pods: %v", err)
|
||||||
|
}
|
||||||
|
housekeepingTimestamp = time.Now()
|
||||||
|
}
|
||||||
kl.syncLoopIteration(updates, handler)
|
kl.syncLoopIteration(updates, handler)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (kl *Kubelet) syncLoopIteration(updates <-chan PodUpdate, handler SyncHandler) {
|
func (kl *Kubelet) syncLoopIteration(updates <-chan PodUpdate, handler SyncHandler) {
|
||||||
kl.syncLoopMonitor.Store(time.Now())
|
kl.syncLoopMonitor.Store(time.Now())
|
||||||
if !kl.containerRuntimeUp() {
|
|
||||||
time.Sleep(5 * time.Second)
|
|
||||||
glog.Infof("Skipping pod synchronization, container runtime is not up.")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if !kl.doneNetworkConfigure() {
|
|
||||||
time.Sleep(5 * time.Second)
|
|
||||||
glog.Infof("Skipping pod synchronization, network is not configured")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
select {
|
select {
|
||||||
case u, ok := <-updates:
|
case u, ok := <-updates:
|
||||||
if !ok {
|
if !ok {
|
||||||
@ -1902,11 +1920,7 @@ func (kl *Kubelet) syncLoopIteration(updates <-chan PodUpdate, handler SyncHandl
|
|||||||
// Periodically syncs all the pods and performs cleanup tasks.
|
// Periodically syncs all the pods and performs cleanup tasks.
|
||||||
glog.V(4).Infof("SyncLoop (periodic sync)")
|
glog.V(4).Infof("SyncLoop (periodic sync)")
|
||||||
handler.HandlePodSyncs(kl.podManager.GetPods())
|
handler.HandlePodSyncs(kl.podManager.GetPods())
|
||||||
if err := handler.HandlePodCleanups(); err != nil {
|
|
||||||
glog.Errorf("Failed cleaning pods: %v", err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
kl.syncLoopMonitor.Store(time.Now())
|
kl.syncLoopMonitor.Store(time.Now())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user