Merge pull request #93717 from liggitt/deflake-nodestatus

Deflake TestUpdateNodeStatusWithLease - guard cached machineInfo
This commit is contained in:
Kubernetes Prow Robot 2020-08-06 16:16:19 -07:00 committed by GitHub
commit 92e51c1901
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 27 additions and 12 deletions

View File

@ -561,7 +561,7 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
if err != nil {
return nil, err
}
klet.machineInfo = machineInfo
klet.setCachedMachineInfo(machineInfo)
imageBackOff := flowcontrol.NewBackOff(backOffPeriod, MaxContainerBackOff)
@ -911,7 +911,8 @@ type Kubelet struct {
configMapManager configmap.Manager
// Cached MachineInfo returned by cadvisor.
machineInfo *cadvisorapi.MachineInfo
machineInfoLock sync.RWMutex
machineInfo *cadvisorapi.MachineInfo
// Handles certificate rotations.
serverCertificateManager certificate.Manager

View File

@ -382,5 +382,13 @@ func (kl *Kubelet) GetVersionInfo() (*cadvisorapiv1.VersionInfo, error) {
// GetCachedMachineInfo assumes that the machine info can't change without a reboot
func (kl *Kubelet) GetCachedMachineInfo() (*cadvisorapiv1.MachineInfo, error) {
kl.machineInfoLock.RLock()
defer kl.machineInfoLock.RUnlock()
return kl.machineInfo, nil
}
func (kl *Kubelet) setCachedMachineInfo(info *cadvisorapiv1.MachineInfo) {
kl.machineInfoLock.Lock()
defer kl.machineInfoLock.Unlock()
kl.machineInfo = info
}

View File

@ -212,7 +212,7 @@ func TestUpdateNewNodeStatus(t *testing.T) {
NumCores: 2,
MemoryCapacity: 10e9, // 10G
}
kubelet.machineInfo = machineInfo
kubelet.setCachedMachineInfo(machineInfo)
expectedNode := &v1.Node{
ObjectMeta: metav1.ObjectMeta{Name: testKubeletHostname},
@ -390,7 +390,7 @@ func TestUpdateExistingNodeStatus(t *testing.T) {
NumCores: 2,
MemoryCapacity: 20e9,
}
kubelet.machineInfo = machineInfo
kubelet.setCachedMachineInfo(machineInfo)
expectedNode := &v1.Node{
ObjectMeta: metav1.ObjectMeta{Name: testKubeletHostname},
@ -596,7 +596,7 @@ func TestUpdateNodeStatusWithRuntimeStateError(t *testing.T) {
NumCores: 2,
MemoryCapacity: 10e9,
}
kubelet.machineInfo = machineInfo
kubelet.setCachedMachineInfo(machineInfo)
expectedNode := &v1.Node{
ObjectMeta: metav1.ObjectMeta{Name: testKubeletHostname},
@ -816,7 +816,7 @@ func TestUpdateNodeStatusWithLease(t *testing.T) {
NumCores: 2,
MemoryCapacity: 20e9,
}
kubelet.machineInfo = machineInfo
kubelet.setCachedMachineInfo(machineInfo)
now := metav1.NewTime(clock.Now()).Rfc3339Copy()
expectedNode := &v1.Node{
@ -961,7 +961,13 @@ func TestUpdateNodeStatusWithLease(t *testing.T) {
// Report node status even if it is still within the duration of nodeStatusReportFrequency.
clock.Step(10 * time.Second)
var newMemoryCapacity int64 = 40e9
kubelet.machineInfo.MemoryCapacity = uint64(newMemoryCapacity)
oldMachineInfo, err := kubelet.GetCachedMachineInfo()
if err != nil {
t.Fatal(err)
}
newMachineInfo := oldMachineInfo.Clone()
newMachineInfo.MemoryCapacity = uint64(newMemoryCapacity)
kubelet.setCachedMachineInfo(newMachineInfo)
assert.NoError(t, kubelet.updateNodeStatus())
// 2 more action (There were 5 actions before).
@ -1073,7 +1079,7 @@ func TestUpdateNodeStatusAndVolumesInUseWithNodeLease(t *testing.T) {
kubelet.containerManager = &localCM{ContainerManager: cm.NewStubContainerManager()}
kubelet.lastStatusReportTime = kubelet.clock.Now()
kubelet.nodeStatusReportFrequency = time.Hour
kubelet.machineInfo = &cadvisorapi.MachineInfo{}
kubelet.setCachedMachineInfo(&cadvisorapi.MachineInfo{})
// override test volumeManager
fakeVolumeManager := kubeletvolume.NewFakeVolumeManager(tc.existingVolumes)
@ -1147,7 +1153,7 @@ func TestRegisterWithApiServer(t *testing.T) {
NumCores: 2,
MemoryCapacity: 1024,
}
kubelet.machineInfo = machineInfo
kubelet.setCachedMachineInfo(machineInfo)
done := make(chan struct{})
go func() {
@ -1356,7 +1362,7 @@ func TestUpdateNewNodeStatusTooLargeReservation(t *testing.T) {
NumCores: 2,
MemoryCapacity: 10e9, // 10G
}
kubelet.machineInfo = machineInfo
kubelet.setCachedMachineInfo(machineInfo)
expectedNode := &v1.Node{
ObjectMeta: metav1.ObjectMeta{Name: testKubeletHostname},
@ -2183,7 +2189,7 @@ func TestRegisterWithApiServerWithTaint(t *testing.T) {
NumCores: 2,
MemoryCapacity: 1024,
}
kubelet.machineInfo = machineInfo
kubelet.setCachedMachineInfo(machineInfo)
var gotNode runtime.Object
kubeClient.AddReactor("create", "nodes", func(action core.Action) (bool, runtime.Object, error) {

View File

@ -215,7 +215,7 @@ func newTestKubeletWithImageList(
kubelet.cadvisor = &cadvisortest.Fake{}
machineInfo, _ := kubelet.cadvisor.MachineInfo()
kubelet.machineInfo = machineInfo
kubelet.setCachedMachineInfo(machineInfo)
fakeMirrorClient := podtest.NewFakeMirrorClient()
secretManager := secret.NewSimpleSecretManager(kubelet.kubeClient)