mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-20 10:20:51 +00:00
Merge pull request #93717 from liggitt/deflake-nodestatus
Deflake TestUpdateNodeStatusWithLease - guard cached machineInfo
This commit is contained in:
commit
92e51c1901
@ -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,6 +911,7 @@ type Kubelet struct {
|
||||
configMapManager configmap.Manager
|
||||
|
||||
// Cached MachineInfo returned by cadvisor.
|
||||
machineInfoLock sync.RWMutex
|
||||
machineInfo *cadvisorapi.MachineInfo
|
||||
|
||||
// Handles certificate rotations.
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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) {
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user