mirror of https://github.com/k3s-io/k3s
Merge pull request #25771 from sjpotter/fs-info
Automatic merge from submit-queue kubelet/cadvisor: Refactor cadvisor disk stat/usage interfaces. basically 1) cadvisor struct will know what runtime the kubelet is, passed in via additional argument to New() 2) rename cadvisor wrapper function to DockerImagesFsInfo() to ImagesFsInfo() and have linux implementation choose a label based on the runtime inside the cadvisor struct 2a) mock/fake/unsupported modified to take the same additional argument in New() 3) kubelet's wrapper for the cadvisor wrapper is renamed in parallel 4) make all tests use new interfacepull/6/head
commit
6224f44717
|
@ -343,7 +343,7 @@ func run(s *options.KubeletServer, kcfg *KubeletConfig) (err error) {
|
|||
}
|
||||
|
||||
if kcfg.CAdvisorInterface == nil {
|
||||
kcfg.CAdvisorInterface, err = cadvisor.New(s.CAdvisorPort)
|
||||
kcfg.CAdvisorInterface, err = cadvisor.New(s.CAdvisorPort, kcfg.ContainerRuntime)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -28,8 +28,8 @@ type MesosCadvisor struct {
|
|||
mem uint64
|
||||
}
|
||||
|
||||
func NewMesosCadvisor(cores int, mem uint64, port uint) (*MesosCadvisor, error) {
|
||||
c, err := cadvisor.New(port)
|
||||
func NewMesosCadvisor(cores int, mem uint64, port uint, runtime string) (*MesosCadvisor, error) {
|
||||
c, err := cadvisor.New(port, runtime)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
@ -209,7 +209,7 @@ func (s *KubeletExecutorServer) runKubelet(
|
|||
|
||||
// create custom cAdvisor interface which return the resource values that Mesos reports
|
||||
ni := <-nodeInfos
|
||||
cAdvisorInterface, err := NewMesosCadvisor(ni.Cores, ni.Mem, s.CAdvisorPort)
|
||||
cAdvisorInterface, err := NewMesosCadvisor(ni.Cores, ni.Mem, s.CAdvisorPort, kcfg.ContainerRuntime)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -39,6 +39,7 @@ import (
|
|||
)
|
||||
|
||||
type cadvisorClient struct {
|
||||
runtime string
|
||||
manager.Manager
|
||||
}
|
||||
|
||||
|
@ -60,7 +61,7 @@ func init() {
|
|||
}
|
||||
|
||||
// Creates a cAdvisor and exports its API on the specified port if port > 0.
|
||||
func New(port uint) (Interface, error) {
|
||||
func New(port uint, runtime string) (Interface, error) {
|
||||
sysFs, err := sysfs.NewRealSysFs()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -73,6 +74,7 @@ func New(port uint) (Interface, error) {
|
|||
}
|
||||
|
||||
cadvisorClient := &cadvisorClient{
|
||||
runtime: runtime,
|
||||
Manager: m,
|
||||
}
|
||||
|
||||
|
@ -163,8 +165,19 @@ func (cc *cadvisorClient) MachineInfo() (*cadvisorapi.MachineInfo, error) {
|
|||
return cc.GetMachineInfo()
|
||||
}
|
||||
|
||||
func (cc *cadvisorClient) DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error) {
|
||||
return cc.getFsInfo(cadvisorfs.LabelDockerImages)
|
||||
func (cc *cadvisorClient) ImagesFsInfo() (cadvisorapiv2.FsInfo, error) {
|
||||
var label string
|
||||
|
||||
switch cc.runtime {
|
||||
case "docker":
|
||||
label = cadvisorfs.LabelDockerImages
|
||||
case "rkt":
|
||||
label = cadvisorfs.LabelRktImages
|
||||
default:
|
||||
return cadvisorapiv2.FsInfo{}, fmt.Errorf("ImagesFsInfo: unknown runtime: %v", cc.runtime)
|
||||
}
|
||||
|
||||
return cc.getFsInfo(label)
|
||||
}
|
||||
|
||||
func (cc *cadvisorClient) RootFsInfo() (cadvisorapiv2.FsInfo, error) {
|
||||
|
|
|
@ -31,7 +31,7 @@ type cadvisorUnsupported struct {
|
|||
|
||||
var _ Interface = new(cadvisorUnsupported)
|
||||
|
||||
func New(port uint) (Interface, error) {
|
||||
func New(port uint, runtime string) (Interface, error) {
|
||||
return &cadvisorUnsupported{}, nil
|
||||
}
|
||||
|
||||
|
@ -65,7 +65,7 @@ func (cu *cadvisorUnsupported) VersionInfo() (*cadvisorapi.VersionInfo, error) {
|
|||
return nil, unsupportedErr
|
||||
}
|
||||
|
||||
func (cu *cadvisorUnsupported) DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error) {
|
||||
func (cu *cadvisorUnsupported) ImagesFsInfo() (cadvisorapiv2.FsInfo, error) {
|
||||
return cadvisorapiv2.FsInfo{}, unsupportedErr
|
||||
}
|
||||
|
||||
|
|
|
@ -62,7 +62,7 @@ func (c *Fake) VersionInfo() (*cadvisorapi.VersionInfo, error) {
|
|||
return new(cadvisorapi.VersionInfo), nil
|
||||
}
|
||||
|
||||
func (c *Fake) DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error) {
|
||||
func (c *Fake) ImagesFsInfo() (cadvisorapiv2.FsInfo, error) {
|
||||
return cadvisorapiv2.FsInfo{}, nil
|
||||
}
|
||||
|
||||
|
|
|
@ -69,7 +69,7 @@ func (c *Mock) VersionInfo() (*cadvisorapi.VersionInfo, error) {
|
|||
return args.Get(0).(*cadvisorapi.VersionInfo), args.Error(1)
|
||||
}
|
||||
|
||||
func (c *Mock) DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error) {
|
||||
func (c *Mock) ImagesFsInfo() (cadvisorapiv2.FsInfo, error) {
|
||||
args := c.Called()
|
||||
return args.Get(0).(cadvisorapiv2.FsInfo), args.Error(1)
|
||||
}
|
||||
|
|
|
@ -34,7 +34,7 @@ type Interface interface {
|
|||
VersionInfo() (*cadvisorapi.VersionInfo, error)
|
||||
|
||||
// Returns usage information about the filesystem holding Docker images.
|
||||
DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error)
|
||||
ImagesFsInfo() (cadvisorapiv2.FsInfo, error)
|
||||
|
||||
// Returns usage information about the root filesystem.
|
||||
RootFsInfo() (cadvisorapiv2.FsInfo, error)
|
||||
|
|
|
@ -35,7 +35,7 @@ const mb = 1024 * 1024
|
|||
type diskSpaceManager interface {
|
||||
// Checks the available disk space
|
||||
IsRootDiskSpaceAvailable() (bool, error)
|
||||
IsDockerDiskSpaceAvailable() (bool, error)
|
||||
IsRuntimeDiskSpaceAvailable() (bool, error)
|
||||
}
|
||||
|
||||
type DiskSpacePolicy struct {
|
||||
|
@ -83,8 +83,8 @@ func (dm *realDiskSpaceManager) getFsInfo(fsType string, f func() (cadvisorapi.F
|
|||
return fsi, nil
|
||||
}
|
||||
|
||||
func (dm *realDiskSpaceManager) IsDockerDiskSpaceAvailable() (bool, error) {
|
||||
return dm.isSpaceAvailable("docker", dm.policy.DockerFreeDiskMB, dm.cadvisor.DockerImagesFsInfo)
|
||||
func (dm *realDiskSpaceManager) IsRuntimeDiskSpaceAvailable() (bool, error) {
|
||||
return dm.isSpaceAvailable("runtime", dm.policy.DockerFreeDiskMB, dm.cadvisor.ImagesFsInfo)
|
||||
}
|
||||
|
||||
func (dm *realDiskSpaceManager) IsRootDiskSpaceAvailable() (bool, error) {
|
||||
|
|
|
@ -61,7 +61,7 @@ func TestSpaceAvailable(t *testing.T) {
|
|||
dm, err := newDiskSpaceManager(mockCadvisor, policy)
|
||||
assert.NoError(err)
|
||||
|
||||
mockCadvisor.On("DockerImagesFsInfo").Return(cadvisorapi.FsInfo{
|
||||
mockCadvisor.On("ImagesFsInfo").Return(cadvisorapi.FsInfo{
|
||||
Usage: 400 * mb,
|
||||
Capacity: 1000 * mb,
|
||||
Available: 600 * mb,
|
||||
|
@ -71,7 +71,7 @@ func TestSpaceAvailable(t *testing.T) {
|
|||
Capacity: 10 * mb,
|
||||
}, nil)
|
||||
|
||||
ok, err := dm.IsDockerDiskSpaceAvailable()
|
||||
ok, err := dm.IsRuntimeDiskSpaceAvailable()
|
||||
assert.NoError(err)
|
||||
assert.True(ok)
|
||||
|
||||
|
@ -80,31 +80,31 @@ func TestSpaceAvailable(t *testing.T) {
|
|||
assert.False(ok)
|
||||
}
|
||||
|
||||
// TestIsDockerDiskSpaceAvailableWithSpace verifies IsDockerDiskSpaceAvailable results when
|
||||
// TestIsRuntimeDiskSpaceAvailableWithSpace verifies IsRuntimeDiskSpaceAvailable results when
|
||||
// space is available.
|
||||
func TestIsDockerDiskSpaceAvailableWithSpace(t *testing.T) {
|
||||
func TestIsRuntimeDiskSpaceAvailableWithSpace(t *testing.T) {
|
||||
assert, policy, mockCadvisor := setUp(t)
|
||||
dm, err := newDiskSpaceManager(mockCadvisor, policy)
|
||||
require.NoError(t, err)
|
||||
|
||||
// 500MB available
|
||||
mockCadvisor.On("DockerImagesFsInfo").Return(cadvisorapi.FsInfo{
|
||||
mockCadvisor.On("ImagesFsInfo").Return(cadvisorapi.FsInfo{
|
||||
Usage: 9500 * mb,
|
||||
Capacity: 10000 * mb,
|
||||
Available: 500 * mb,
|
||||
}, nil)
|
||||
|
||||
ok, err := dm.IsDockerDiskSpaceAvailable()
|
||||
ok, err := dm.IsRuntimeDiskSpaceAvailable()
|
||||
assert.NoError(err)
|
||||
assert.True(ok)
|
||||
}
|
||||
|
||||
// TestIsDockerDiskSpaceAvailableWithoutSpace verifies IsDockerDiskSpaceAvailable results when
|
||||
// TestIsRuntimeDiskSpaceAvailableWithoutSpace verifies IsRuntimeDiskSpaceAvailable results when
|
||||
// space is not available.
|
||||
func TestIsDockerDiskSpaceAvailableWithoutSpace(t *testing.T) {
|
||||
func TestIsRuntimeDiskSpaceAvailableWithoutSpace(t *testing.T) {
|
||||
// 1MB available
|
||||
assert, policy, mockCadvisor := setUp(t)
|
||||
mockCadvisor.On("DockerImagesFsInfo").Return(cadvisorapi.FsInfo{
|
||||
mockCadvisor.On("ImagesFsInfo").Return(cadvisorapi.FsInfo{
|
||||
Usage: 999 * mb,
|
||||
Capacity: 1000 * mb,
|
||||
Available: 1 * mb,
|
||||
|
@ -113,7 +113,7 @@ func TestIsDockerDiskSpaceAvailableWithoutSpace(t *testing.T) {
|
|||
dm, err := newDiskSpaceManager(mockCadvisor, policy)
|
||||
require.NoError(t, err)
|
||||
|
||||
ok, err := dm.IsDockerDiskSpaceAvailable()
|
||||
ok, err := dm.IsRuntimeDiskSpaceAvailable()
|
||||
assert.NoError(err)
|
||||
assert.False(ok)
|
||||
}
|
||||
|
@ -164,7 +164,7 @@ func TestCache(t *testing.T) {
|
|||
dm, err := newDiskSpaceManager(mockCadvisor, policy)
|
||||
assert.NoError(err)
|
||||
|
||||
mockCadvisor.On("DockerImagesFsInfo").Return(cadvisorapi.FsInfo{
|
||||
mockCadvisor.On("ImagesFsInfo").Return(cadvisorapi.FsInfo{
|
||||
Usage: 400 * mb,
|
||||
Capacity: 1000 * mb,
|
||||
Available: 300 * mb,
|
||||
|
@ -176,7 +176,7 @@ func TestCache(t *testing.T) {
|
|||
}, nil).Once()
|
||||
|
||||
// Initial calls which should be recorded in mockCadvisor
|
||||
ok, err := dm.IsDockerDiskSpaceAvailable()
|
||||
ok, err := dm.IsRuntimeDiskSpaceAvailable()
|
||||
assert.NoError(err)
|
||||
assert.True(ok)
|
||||
|
||||
|
@ -188,7 +188,7 @@ func TestCache(t *testing.T) {
|
|||
cadvisorCallCount := len(mockCadvisor.Calls)
|
||||
|
||||
// Checking for space again shouldn't need to mock as cache would serve it.
|
||||
ok, err = dm.IsDockerDiskSpaceAvailable()
|
||||
ok, err = dm.IsRuntimeDiskSpaceAvailable()
|
||||
assert.NoError(err)
|
||||
assert.True(ok)
|
||||
|
||||
|
@ -208,9 +208,9 @@ func TestFsInfoError(t *testing.T) {
|
|||
dm, err := newDiskSpaceManager(mockCadvisor, policy)
|
||||
assert.NoError(err)
|
||||
|
||||
mockCadvisor.On("DockerImagesFsInfo").Return(cadvisorapi.FsInfo{}, fmt.Errorf("can't find fs"))
|
||||
mockCadvisor.On("ImagesFsInfo").Return(cadvisorapi.FsInfo{}, fmt.Errorf("can't find fs"))
|
||||
mockCadvisor.On("RootFsInfo").Return(cadvisorapi.FsInfo{}, fmt.Errorf("EBUSY"))
|
||||
ok, err := dm.IsDockerDiskSpaceAvailable()
|
||||
ok, err := dm.IsRuntimeDiskSpaceAvailable()
|
||||
assert.Error(err)
|
||||
assert.True(ok)
|
||||
ok, err = dm.IsRootDiskSpaceAvailable()
|
||||
|
|
|
@ -209,7 +209,7 @@ func (im *realImageManager) detectImages(detectTime time.Time) error {
|
|||
|
||||
func (im *realImageManager) GarbageCollect() error {
|
||||
// Get disk usage on disk holding images.
|
||||
fsInfo, err := im.cadvisor.DockerImagesFsInfo()
|
||||
fsInfo, err := im.cadvisor.ImagesFsInfo()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -373,7 +373,7 @@ func TestGarbageCollectBelowLowThreshold(t *testing.T) {
|
|||
manager, _, mockCadvisor := newRealImageManager(policy)
|
||||
|
||||
// Expect 40% usage.
|
||||
mockCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{
|
||||
mockCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{
|
||||
Usage: 400,
|
||||
Capacity: 1000,
|
||||
}, nil)
|
||||
|
@ -388,7 +388,7 @@ func TestGarbageCollectCadvisorFailure(t *testing.T) {
|
|||
}
|
||||
manager, _, mockCadvisor := newRealImageManager(policy)
|
||||
|
||||
mockCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, fmt.Errorf("error"))
|
||||
mockCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, fmt.Errorf("error"))
|
||||
assert.NotNil(t, manager.GarbageCollect())
|
||||
}
|
||||
|
||||
|
@ -400,7 +400,7 @@ func TestGarbageCollectBelowSuccess(t *testing.T) {
|
|||
manager, fakeRuntime, mockCadvisor := newRealImageManager(policy)
|
||||
|
||||
// Expect 95% usage and most of it gets freed.
|
||||
mockCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{
|
||||
mockCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{
|
||||
Usage: 950,
|
||||
Capacity: 1000,
|
||||
}, nil)
|
||||
|
@ -419,7 +419,7 @@ func TestGarbageCollectNotEnoughFreed(t *testing.T) {
|
|||
manager, fakeRuntime, mockCadvisor := newRealImageManager(policy)
|
||||
|
||||
// Expect 95% usage and little of it gets freed.
|
||||
mockCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{
|
||||
mockCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{
|
||||
Usage: 950,
|
||||
Capacity: 1000,
|
||||
}, nil)
|
||||
|
|
|
@ -2386,7 +2386,7 @@ func (kl *Kubelet) isOutOfDisk() bool {
|
|||
outOfDockerDisk := false
|
||||
outOfRootDisk := false
|
||||
// Check disk space once globally and reject or accept all new pods.
|
||||
withinBounds, err := kl.diskSpaceManager.IsDockerDiskSpaceAvailable()
|
||||
withinBounds, err := kl.diskSpaceManager.IsRuntimeDiskSpaceAvailable()
|
||||
// Assume enough space in case of errors.
|
||||
if err == nil && !withinBounds {
|
||||
outOfDockerDisk = true
|
||||
|
|
|
@ -50,10 +50,10 @@ func (kl *Kubelet) GetContainerInfoV2(name string, options cadvisorapiv2.Request
|
|||
return kl.cadvisor.ContainerInfoV2(name, options)
|
||||
}
|
||||
|
||||
// DockerImagesFsInfo returns information about docker image fs usage from
|
||||
// ImagesFsInfo returns information about docker image fs usage from
|
||||
// cadvisor.
|
||||
func (kl *Kubelet) DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error) {
|
||||
return kl.cadvisor.DockerImagesFsInfo()
|
||||
func (kl *Kubelet) ImagesFsInfo() (cadvisorapiv2.FsInfo, error) {
|
||||
return kl.cadvisor.ImagesFsInfo()
|
||||
}
|
||||
|
||||
// RootFsInfo returns info about the root fs from cadvisor.
|
||||
|
|
|
@ -356,7 +356,7 @@ func TestSyncLoopAbort(t *testing.T) {
|
|||
func TestSyncPodsStartPod(t *testing.T) {
|
||||
testKubelet := newTestKubelet(t)
|
||||
testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
kubelet := testKubelet.kubelet
|
||||
fakeRuntime := testKubelet.fakeRuntime
|
||||
|
@ -378,7 +378,7 @@ func TestSyncPodsDeletesWhenSourcesAreReady(t *testing.T) {
|
|||
testKubelet := newTestKubelet(t)
|
||||
fakeRuntime := testKubelet.fakeRuntime
|
||||
testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
kubelet := testKubelet.kubelet
|
||||
kubelet.sourcesReady = config.NewSourcesReady(func(_ sets.String) bool { return ready })
|
||||
|
@ -2184,7 +2184,7 @@ func TestHandlePortConflicts(t *testing.T) {
|
|||
testKubelet := newTestKubelet(t)
|
||||
kl := testKubelet.kubelet
|
||||
testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
|
||||
kl.nodeLister = testNodeLister{nodes: []api.Node{
|
||||
|
@ -2245,7 +2245,7 @@ func TestHandleHostNameConflicts(t *testing.T) {
|
|||
testKubelet := newTestKubelet(t)
|
||||
kl := testKubelet.kubelet
|
||||
testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
|
||||
kl.nodeLister = testNodeLister{nodes: []api.Node{
|
||||
|
@ -2315,7 +2315,7 @@ func TestHandleNodeSelector(t *testing.T) {
|
|||
kl.nodeLister = testNodeLister{nodes: nodes}
|
||||
kl.nodeInfo = testNodeInfo{nodes: nodes}
|
||||
testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
pods := []*api.Pod{
|
||||
podWithUidNameNsSpec("123456789", "podA", "foo", api.PodSpec{NodeSelector: map[string]string{"key": "A"}}),
|
||||
|
@ -2360,7 +2360,7 @@ func TestHandleMemExceeded(t *testing.T) {
|
|||
kl.nodeLister = testNodeLister{nodes: nodes}
|
||||
kl.nodeInfo = testNodeInfo{nodes: nodes}
|
||||
testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
|
||||
spec := api.PodSpec{NodeName: kl.nodeName,
|
||||
|
@ -2404,7 +2404,7 @@ func TestHandleMemExceeded(t *testing.T) {
|
|||
func TestPurgingObsoleteStatusMapEntries(t *testing.T) {
|
||||
testKubelet := newTestKubelet(t)
|
||||
testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
versionInfo := &cadvisorapi.VersionInfo{
|
||||
KernelVersion: "3.16.0-0.bpo.4-amd64",
|
||||
|
@ -2553,7 +2553,7 @@ func TestValidateContainerLogStatus(t *testing.T) {
|
|||
func updateDiskSpacePolicy(kubelet *Kubelet, mockCadvisor *cadvisortest.Mock, rootCap, dockerCap, rootAvail, dockerAvail uint64, rootThreshold, dockerThreshold int) error {
|
||||
dockerimagesFsInfo := cadvisorapiv2.FsInfo{Capacity: rootCap * mb, Available: rootAvail * mb}
|
||||
rootFsInfo := cadvisorapiv2.FsInfo{Capacity: dockerCap * mb, Available: dockerAvail * mb}
|
||||
mockCadvisor.On("DockerImagesFsInfo").Return(dockerimagesFsInfo, nil)
|
||||
mockCadvisor.On("ImagesFsInfo").Return(dockerimagesFsInfo, nil)
|
||||
mockCadvisor.On("RootFsInfo").Return(rootFsInfo, nil)
|
||||
|
||||
dsp := DiskSpacePolicy{DockerFreeDiskMB: rootThreshold, RootFreeDiskMB: dockerThreshold}
|
||||
|
@ -3315,7 +3315,7 @@ func TestDeleteOutdatedMirrorPod(t *testing.T) {
|
|||
testKubelet := newTestKubelet(t)
|
||||
testKubelet.fakeCadvisor.On("Start").Return(nil)
|
||||
testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
|
||||
kl := testKubelet.kubelet
|
||||
|
@ -3358,7 +3358,7 @@ func TestDeleteOrphanedMirrorPods(t *testing.T) {
|
|||
testKubelet := newTestKubelet(t)
|
||||
testKubelet.fakeCadvisor.On("Start").Return(nil)
|
||||
testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
|
||||
kl := testKubelet.kubelet
|
||||
|
@ -3641,7 +3641,7 @@ func TestRegisterExistingNodeWithApiserver(t *testing.T) {
|
|||
DockerVersion: "1.5.0",
|
||||
}
|
||||
mockCadvisor.On("VersionInfo").Return(versionInfo, nil)
|
||||
mockCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{
|
||||
mockCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{
|
||||
Usage: 400 * mb,
|
||||
Capacity: 1000 * mb,
|
||||
Available: 600 * mb,
|
||||
|
@ -3866,7 +3866,7 @@ func podWithUidNameNsSpec(uid types.UID, name, namespace string, spec api.PodSpe
|
|||
func TestDeletePodDirsForDeletedPods(t *testing.T) {
|
||||
testKubelet := newTestKubelet(t)
|
||||
testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
kl := testKubelet.kubelet
|
||||
pods := []*api.Pod{
|
||||
|
@ -3913,7 +3913,7 @@ func syncAndVerifyPodDir(t *testing.T, testKubelet *TestKubelet, pods []*api.Pod
|
|||
func TestDoesNotDeletePodDirsForTerminatedPods(t *testing.T) {
|
||||
testKubelet := newTestKubelet(t)
|
||||
testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
kl := testKubelet.kubelet
|
||||
pods := []*api.Pod{
|
||||
|
@ -3933,7 +3933,7 @@ func TestDoesNotDeletePodDirsForTerminatedPods(t *testing.T) {
|
|||
func TestDoesNotDeletePodDirsIfContainerIsRunning(t *testing.T) {
|
||||
testKubelet := newTestKubelet(t)
|
||||
testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
runningPod := &kubecontainer.Pod{
|
||||
ID: "12345678",
|
||||
|
@ -4586,7 +4586,7 @@ func TestHandlePodAdditionsInvokesPodAdmitHandlers(t *testing.T) {
|
|||
},
|
||||
}}
|
||||
testKubelet.fakeCadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
testKubelet.fakeCadvisor.On("RootFsInfo").Return(cadvisorapiv2.FsInfo{}, nil)
|
||||
|
||||
pods := []*api.Pod{
|
||||
|
|
|
@ -46,7 +46,7 @@ import (
|
|||
func TestRunOnce(t *testing.T) {
|
||||
cadvisor := &cadvisortest.Mock{}
|
||||
cadvisor.On("MachineInfo").Return(&cadvisorapi.MachineInfo{}, nil)
|
||||
cadvisor.On("DockerImagesFsInfo").Return(cadvisorapiv2.FsInfo{
|
||||
cadvisor.On("ImagesFsInfo").Return(cadvisorapiv2.FsInfo{
|
||||
Usage: 400 * mb,
|
||||
Capacity: 1000 * mb,
|
||||
Available: 600 * mb,
|
||||
|
|
|
@ -171,7 +171,7 @@ type HostInterface interface {
|
|||
GetNode() (*api.Node, error)
|
||||
GetNodeConfig() cm.NodeConfig
|
||||
LatestLoopEntryTime() time.Time
|
||||
DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error)
|
||||
ImagesFsInfo() (cadvisorapiv2.FsInfo, error)
|
||||
RootFsInfo() (cadvisorapiv2.FsInfo, error)
|
||||
ListVolumesForPod(podUID types.UID) (map[string]volume.Volume, bool)
|
||||
PLEGHealthCheck() (bool, error)
|
||||
|
|
|
@ -142,8 +142,8 @@ func (_ *fakeKubelet) GetContainerInfoV2(_ string, _ cadvisorapiv2.RequestOption
|
|||
return nil, nil
|
||||
}
|
||||
|
||||
func (_ *fakeKubelet) DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error) {
|
||||
return cadvisorapiv2.FsInfo{}, fmt.Errorf("Unsupported Operation DockerImagesFsInfo")
|
||||
func (_ *fakeKubelet) ImagesFsInfo() (cadvisorapiv2.FsInfo, error) {
|
||||
return cadvisorapiv2.FsInfo{}, fmt.Errorf("Unsupported Operation ImagesFsInfo")
|
||||
}
|
||||
|
||||
func (_ *fakeKubelet) RootFsInfo() (cadvisorapiv2.FsInfo, error) {
|
||||
|
|
|
@ -44,7 +44,7 @@ type StatsProvider interface {
|
|||
GetPodByName(namespace, name string) (*api.Pod, bool)
|
||||
GetNode() (*api.Node, error)
|
||||
GetNodeConfig() cm.NodeConfig
|
||||
DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error)
|
||||
ImagesFsInfo() (cadvisorapiv2.FsInfo, error)
|
||||
RootFsInfo() (cadvisorapiv2.FsInfo, error)
|
||||
ListVolumesForPod(podUID types.UID) (map[string]volume.Volume, bool)
|
||||
GetPods() []*api.Pod
|
||||
|
|
|
@ -162,8 +162,8 @@ func (_m *MockStatsProvider) GetNodeConfig() cm.NodeConfig {
|
|||
return r0
|
||||
}
|
||||
|
||||
// DockerImagesFsInfo provides a mock function with given fields:
|
||||
func (_m *MockStatsProvider) DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error) {
|
||||
// ImagesFsInfo provides a mock function with given fields:
|
||||
func (_m *MockStatsProvider) ImagesFsInfo() (cadvisorapiv2.FsInfo, error) {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 cadvisorapiv2.FsInfo
|
||||
|
|
|
@ -81,7 +81,7 @@ func (sp *summaryProviderImpl) Get() (*stats.Summary, error) {
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
imageFsInfo, err := sp.provider.DockerImagesFsInfo()
|
||||
imageFsInfo, err := sp.provider.ImagesFsInfo()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
@ -99,7 +99,7 @@ func containerRuntime() error {
|
|||
}
|
||||
|
||||
// Setup cadvisor to check the container environment
|
||||
c, err := cadvisor.New(0 /*don't start the http server*/)
|
||||
c, err := cadvisor.New(0 /*don't start the http server*/, "docker")
|
||||
if err != nil {
|
||||
return printError("Container Runtime Check: %s Could not start cadvisor %v", failed, err)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue