File do-not-gc-sle-kubic-images.patch of Package kubernetes
commit 980df8bb8044ff3214d9515084f2370b7c797a92
Author: Rafael Fernández López <ereslibre@ereslibre.es>
Date: Thu Mar 1 16:25:50 2018 +0100
Avoid the kubelet image GC to remove internal images
Some images are loaded by the `container-feeder`, those images won't be
available until we reboot again if they get cleaned by the image GC. Avoid
to clean those.
diff --git a/pkg/kubelet/images/image_gc_manager.go b/pkg/kubelet/images/image_gc_manager.go
index 83f6e97956..19bc1f2261 100644
--- a/pkg/kubelet/images/image_gc_manager.go
+++ b/pkg/kubelet/images/image_gc_manager.go
@@ -20,7 +20,9 @@ import (
goerrors "errors"
"fmt"
"math"
+ "regexp"
"sort"
+ "strings"
"sync"
"time"
@@ -223,6 +225,19 @@ func (im *realImageGCManager) detectImages(detectTime time.Time) (sets.String, e
}
}
+ // Mark all "kubic/" and "slesXY/" prefixed images as in use.
+ for _, image := range images {
+ for _, repo_tag := range image.RepoTags {
+ is_kubic := strings.HasPrefix(repo_tag, "kubic/")
+ is_sles, _ := regexp.MatchString("^sles\\d{2}/", repo_tag)
+ if is_kubic || is_sles {
+ glog.V(5).Infof("Marking image %s (%s) as in use, as it is an internal image", repo_tag, image.ID)
+ imagesInUse.Insert(image.ID)
+ break
+ }
+ }
+ }
+
// Add new images and record those being used.
now := time.Now()
currentImages := sets.NewString()