Merge pull request #129151 from rphillips/only_event_one_reboot_event

kubelet: only emit one reboot event
This commit is contained in:
Kubernetes Prow Robot 2024-12-12 06:41:09 +00:00 committed by GitHub
commit 2b2644159f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -23,6 +23,7 @@ import (
"net"
goruntime "runtime"
"strings"
"sync"
"time"
cadvisorapiv1 "github.com/google/cadvisor/info/v1"
@ -57,6 +58,9 @@ const (
// Setters may partially mutate the node before returning an error.
type Setter func(ctx context.Context, node *v1.Node) error
// Only emit one reboot event
var rebootEvent sync.Once
// NodeAddress returns a Setter that updates address-related information on the node.
func NodeAddress(nodeIPs []net.IP, // typically Kubelet.nodeIPs
validateNodeIPFunc func(net.IP) error, // typically Kubelet.nodeIPValidator
@ -250,6 +254,7 @@ func hasAddressType(addresses []v1.NodeAddress, addressType v1.NodeAddressType)
}
return false
}
func hasAddressValue(addresses []v1.NodeAddress, addressValue string) bool {
for _, address := range addresses {
if address.Address == addressValue {
@ -311,8 +316,12 @@ func MachineInfo(nodeName string,
node.Status.NodeInfo.BootID != info.BootID {
// TODO: This requires a transaction, either both node status is updated
// and event is recorded or neither should happen, see issue #6055.
//
// Only emit one reboot event. recordEventFunc queues events and can emit many superfluous reboot events
rebootEvent.Do(func() {
recordEventFunc(v1.EventTypeWarning, events.NodeRebooted,
fmt.Sprintf("Node %s has been rebooted, boot id: %s", nodeName, info.BootID))
})
}
node.Status.NodeInfo.BootID = info.BootID