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()
openSUSE Build Service is sponsored by