Merge pull request #28915 from ronnielai/gc-threshold

Automatic merge from submit-queue

Support deleting all unused images

#25239
pull/6/head
k8s-merge-robot 2016-07-15 06:22:56 -07:00 committed by GitHub
commit 15b1fe33ee
2 changed files with 30 additions and 0 deletions

View File

@ -18,6 +18,7 @@ package kubelet
import (
"fmt"
"math"
"sort"
"sync"
"time"
@ -46,6 +47,9 @@ type imageManager interface {
GetImageList() ([]kubecontainer.Image, error)
// Delete all unused images and returns the number of bytes freed. The number of bytes freed is always returned.
DeleteUnusedImages() (int64, error)
// TODO(vmarmol): Have this subsume pulls as well.
}
@ -248,6 +252,10 @@ func (im *realImageManager) GarbageCollect() error {
return nil
}
func (im *realImageManager) DeleteUnusedImages() (int64, error) {
return im.freeSpace(math.MaxInt64, time.Now())
}
// Tries to free bytesToFree worth of images on the disk.
//
// Returns the number of bytes free and an error if any occurred. The number of

View File

@ -238,6 +238,28 @@ func TestFreeSpaceImagesInUseContainersAreIgnored(t *testing.T) {
assert.Len(fakeRuntime.ImageList, 1)
}
func TestDeleteUnusedImagesRemoveAllUnusedImages(t *testing.T) {
manager, fakeRuntime, _ := newRealImageManager(ImageGCPolicy{})
fakeRuntime.ImageList = []container.Image{
makeImage(0, 1024),
makeImage(1, 2048),
makeImage(2, 2048),
}
fakeRuntime.AllPodList = []*containertest.FakePod{
{Pod: &container.Pod{
Containers: []*container.Container{
makeContainer(2),
},
}},
}
spaceFreed, err := manager.DeleteUnusedImages()
assert := assert.New(t)
require.NoError(t, err)
assert.EqualValues(3072, spaceFreed)
assert.Len(fakeRuntime.ImageList, 1)
}
func TestFreeSpaceRemoveByLeastRecentlyUsed(t *testing.T) {
manager, fakeRuntime, _ := newRealImageManager(ImageGCPolicy{})
fakeRuntime.ImageList = []container.Image{