### What happened?

After restart Kubelet, node will become notReady in first kubelet update period.

node condition is :
```
  - lastHeartbeatTime: "2024-04-19T06:40:55Z"
    lastTransitionTime: "2024-04-19T06:40:55Z"
    message: container runtime status check may not have completed yet
    reason: KubeletNotReady
    status: "False"
    type: Ready
```

in kubelet's logs:
```
I0419 14:40:55.510166 1902465 setters.go:577] "Node became not ready" node="mjq-k8stestarsenalwork-1" condition={Type:Ready Status:False LastHeartbeatTime:2024-04-19 14:40:55.510127183 +0800 CST m=+5.226928586 LastTransitionTime:2024-04-19 14:40:55.510127183 +0800 CST m=+5.226928586 Reason:KubeletNotReady Message:container runtime status check may not have completed yet}
```

when go in to next period (default 10s), node status resume to Ready.

### What did you expect to happen?

Restart Kubelet should not make node status change to notReady.

### How can we reproduce it (as minimally and precisely as possible)?

Restart Kubelet, and watch node status for second
```
watch -n 1 'kubectl get no <node-name>'
```


### Anything else we need to know?

The root case maybe here:
When kubelet start, it will start two go routine, one detect runtime status, one check node status and update to APIServer;
detect runtime status:

in `updateRuntimeUp` it will update `lastBaseRuntimeSync`:
https://github.com/kubernetes/kubernetes/blob/bf07ef3950d80256cb366b035712b6d60b8a3f4c/pkg/kubelet/kubelet.go#L2909

in `kl.runtimeState.runtimeErrors` it will check runtimeStatus include `lastBaseRuntimeSync`:

https://github.com/kubernetes/kubernetes/blob/bf07ef3950d80256cb366b035712b6d60b8a3f4c/pkg/kubelet/runtime.go#L108

`kl.runtimeState.runtimeErrors` is one of the notReady setter func:
https://github.com/kubernetes/kubernetes/blob/bf07ef3950d80256cb366b035712b6d60b8a3f4c/pkg/kubelet/kubelet_node_status.go#L748

So if nodestatus execute before `updateRuntimeUp`, kubelet will update a node status with notReady condition:
https://github.com/kubernetes/kubernetes/blob/bf07ef3950d80256cb366b035712b6d60b8a3f4c/pkg/kubelet/kubelet.go#L1635-L1641
In kubelet starting,  both `syncNodeStatus` go routine and `fastStatusUpdateOnce` will be called before `updateRuntimeUp`,  so the first node status is notReady.

### Kubernetes version

In our cluster is v1.22.17, but I belive it can reproduce in latest version.

<details>

```console
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.17", GitCommit:"a7736eaf34d823d7652415337ac0ad06db9167fc", GitTreeState:"clean", BuildDate:"2022-12-08T11:47:36Z", GoVersion:"go1.16.15", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.17", GitCommit:"a7736eaf34d823d7652415337ac0ad06db9167fc", GitTreeState:"clean", BuildDate:"2022-12-08T11:42:04Z", GoVersion:"go1.16.15", Compiler:"gc", Platform:"linux/amd64"}
```

</details>


### Cloud provider

<details>

</details>


### OS version

<details>

```console

# On Linux:
$ cat /etc/os-release
# paste output here
$ uname -a
# paste output here

# On Windows:
C:\> wmic os get Caption, Version, BuildNumber, OSArchitecture
# paste output here
```

</details>


### Install tools

<details>

</details>


### Container runtime (CRI) and version (if applicable)

<details>

</details>


### Related plugins (CNI, CSI, ...) and versions (if applicable)

<details>

</details>

After restart Kubelet, node will become notReady in first kubelet update period.
This is a GitHub Issue
repo:kubernetes
owner:kubernetes
Title : After restart Kubelet, node will become notReady in first kubelet update period.
Issue date:

--- start body ---
### What happened?

After restart Kubelet, node will become notReady in first kubelet update period.

node condition is :
```
  - lastHeartbeatTime: "2024-04-19T06:40:55Z"
    lastTransitionTime: "2024-04-19T06:40:55Z"
    message: container runtime status check may not have completed yet
    reason: KubeletNotReady
    status: "False"
    type: Ready
```

in kubelet's logs:
```
I0419 14:40:55.510166 1902465 setters.go:577] "Node became not ready" node="mjq-k8stestarsenalwork-1" condition={Type:Ready Status:False LastHeartbeatTime:2024-04-19 14:40:55.510127183 +0800 CST m=+5.226928586 LastTransitionTime:2024-04-19 14:40:55.510127183 +0800 CST m=+5.226928586 Reason:KubeletNotReady Message:container runtime status check may not have completed yet}
```

when go in to next period (default 10s), node status resume to Ready.

### What did you expect to happen?

Restart Kubelet should not make node status change to notReady.

### How can we reproduce it (as minimally and precisely as possible)?

Restart Kubelet, and watch node status for second
```
watch -n 1 'kubectl get no <node-name>'
```


### Anything else we need to know?

The root case maybe here:
When kubelet start, it will start two go routine, one detect runtime status, one check node status and update to APIServer;
detect runtime status:

in `updateRuntimeUp` it will update `lastBaseRuntimeSync`:
https://github.com/kubernetes/kubernetes/blob/bf07ef3950d80256cb366b035712b6d60b8a3f4c/pkg/kubelet/kubelet.go#L2909

in `kl.runtimeState.runtimeErrors` it will check runtimeStatus include `lastBaseRuntimeSync`:

https://github.com/kubernetes/kubernetes/blob/bf07ef3950d80256cb366b035712b6d60b8a3f4c/pkg/kubelet/runtime.go#L108

`kl.runtimeState.runtimeErrors` is one of the notReady setter func:
https://github.com/kubernetes/kubernetes/blob/bf07ef3950d80256cb366b035712b6d60b8a3f4c/pkg/kubelet/kubelet_node_status.go#L748

So if nodestatus execute before `updateRuntimeUp`, kubelet will update a node status with notReady condition:
https://github.com/kubernetes/kubernetes/blob/bf07ef3950d80256cb366b035712b6d60b8a3f4c/pkg/kubelet/kubelet.go#L1635-L1641
In kubelet starting,  both `syncNodeStatus` go routine and `fastStatusUpdateOnce` will be called before `updateRuntimeUp`,  so the first node status is notReady.

### Kubernetes version

In our cluster is v1.22.17, but I belive it can reproduce in latest version.

<details>

```console
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.17", GitCommit:"a7736eaf34d823d7652415337ac0ad06db9167fc", GitTreeState:"clean", BuildDate:"2022-12-08T11:47:36Z", GoVersion:"go1.16.15", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.17", GitCommit:"a7736eaf34d823d7652415337ac0ad06db9167fc", GitTreeState:"clean", BuildDate:"2022-12-08T11:42:04Z", GoVersion:"go1.16.15", Compiler:"gc", Platform:"linux/amd64"}
```

</details>


### Cloud provider

<details>

</details>


### OS version

<details>

```console

# On Linux:
$ cat /etc/os-release
# paste output here
$ uname -a
# paste output here

# On Windows:
C:\> wmic os get Caption, Version, BuildNumber, OSArchitecture
# paste output here
```

</details>


### Install tools

<details>

</details>


### Container runtime (CRI) and version (if applicable)

<details>

</details>


### Related plugins (CNI, CSI, ...) and versions (if applicable)

<details>

</details>

--- end body ---
