mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-17 15:50:10 +00:00
Merge pull request #129151 from rphillips/only_event_one_reboot_event
kubelet: only emit one reboot event
This commit is contained in:
commit
2b2644159f
@ -23,6 +23,7 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
goruntime "runtime"
|
goruntime "runtime"
|
||||||
"strings"
|
"strings"
|
||||||
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
cadvisorapiv1 "github.com/google/cadvisor/info/v1"
|
cadvisorapiv1 "github.com/google/cadvisor/info/v1"
|
||||||
@ -57,6 +58,9 @@ const (
|
|||||||
// Setters may partially mutate the node before returning an error.
|
// Setters may partially mutate the node before returning an error.
|
||||||
type Setter func(ctx context.Context, node *v1.Node) 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.
|
// NodeAddress returns a Setter that updates address-related information on the node.
|
||||||
func NodeAddress(nodeIPs []net.IP, // typically Kubelet.nodeIPs
|
func NodeAddress(nodeIPs []net.IP, // typically Kubelet.nodeIPs
|
||||||
validateNodeIPFunc func(net.IP) error, // typically Kubelet.nodeIPValidator
|
validateNodeIPFunc func(net.IP) error, // typically Kubelet.nodeIPValidator
|
||||||
@ -250,6 +254,7 @@ func hasAddressType(addresses []v1.NodeAddress, addressType v1.NodeAddressType)
|
|||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
func hasAddressValue(addresses []v1.NodeAddress, addressValue string) bool {
|
func hasAddressValue(addresses []v1.NodeAddress, addressValue string) bool {
|
||||||
for _, address := range addresses {
|
for _, address := range addresses {
|
||||||
if address.Address == addressValue {
|
if address.Address == addressValue {
|
||||||
@ -311,8 +316,12 @@ func MachineInfo(nodeName string,
|
|||||||
node.Status.NodeInfo.BootID != info.BootID {
|
node.Status.NodeInfo.BootID != info.BootID {
|
||||||
// TODO: This requires a transaction, either both node status is updated
|
// TODO: This requires a transaction, either both node status is updated
|
||||||
// and event is recorded or neither should happen, see issue #6055.
|
// and event is recorded or neither should happen, see issue #6055.
|
||||||
recordEventFunc(v1.EventTypeWarning, events.NodeRebooted,
|
//
|
||||||
fmt.Sprintf("Node %s has been rebooted, boot id: %s", nodeName, info.BootID))
|
// 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
|
node.Status.NodeInfo.BootID = info.BootID
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user