mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 12:43:23 +00:00
Support deleting all unused images
This commit is contained in:
parent
0efd03810c
commit
4d5b6c5a9e
@ -18,6 +18,7 @@ package kubelet
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"math"
|
||||||
"sort"
|
"sort"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
@ -46,6 +47,9 @@ type imageManager interface {
|
|||||||
|
|
||||||
GetImageList() ([]kubecontainer.Image, error)
|
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.
|
// TODO(vmarmol): Have this subsume pulls as well.
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -248,6 +252,10 @@ func (im *realImageManager) GarbageCollect() error {
|
|||||||
return nil
|
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.
|
// 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
|
// Returns the number of bytes free and an error if any occurred. The number of
|
||||||
|
@ -238,6 +238,28 @@ func TestFreeSpaceImagesInUseContainersAreIgnored(t *testing.T) {
|
|||||||
assert.Len(fakeRuntime.ImageList, 1)
|
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) {
|
func TestFreeSpaceRemoveByLeastRecentlyUsed(t *testing.T) {
|
||||||
manager, fakeRuntime, _ := newRealImageManager(ImageGCPolicy{})
|
manager, fakeRuntime, _ := newRealImageManager(ImageGCPolicy{})
|
||||||
fakeRuntime.ImageList = []container.Image{
|
fakeRuntime.ImageList = []container.Image{
|
||||||
|
Loading…
Reference in New Issue
Block a user