mirror of
https://github.com/kubernetes/node-problem-detector.git
synced 2026-03-03 18:20:48 +00:00
Merge pull request #356 from mm4tt/heartbeat-period-flag
Make heartbeatPeriod const into a flag
This commit is contained in:
@@ -57,6 +57,8 @@ type NodeProblemDetectorOptions struct {
|
||||
// APIServerWaitInterval is the interval between the checks on the
|
||||
// readiness of kube-apiserver.
|
||||
APIServerWaitInterval time.Duration
|
||||
// K8sExporterHeartbeatPeriod is the period at which the k8s exporter does forcibly sync with apiserver.
|
||||
K8sExporterHeartbeatPeriod time.Duration
|
||||
|
||||
// prometheusExporter options
|
||||
// PrometheusServerPort is the port to bind the Prometheus scrape endpoint. Use 0 to disable.
|
||||
@@ -107,6 +109,7 @@ func (npdo *NodeProblemDetectorOptions) AddFlags(fs *pflag.FlagSet) {
|
||||
"", "Custom URI used to connect to Kubernetes ApiServer. This is ignored if --enable-k8s-exporter is false.")
|
||||
fs.DurationVar(&npdo.APIServerWaitTimeout, "apiserver-wait-timeout", time.Duration(5)*time.Minute, "The timeout on waiting for kube-apiserver to be ready. This is ignored if --enable-k8s-exporter is false.")
|
||||
fs.DurationVar(&npdo.APIServerWaitInterval, "apiserver-wait-interval", time.Duration(5)*time.Second, "The interval between the checks on the readiness of kube-apiserver. This is ignored if --enable-k8s-exporter is false.")
|
||||
fs.DurationVar(&npdo.K8sExporterHeartbeatPeriod, "k8s-exporter-heartbeat-period", 1*time.Minute, "The period at which k8s-exporter does forcibly sync with apiserver.")
|
||||
fs.BoolVar(&npdo.PrintVersion, "version", false, "Print version information and quit")
|
||||
fs.StringVar(&npdo.HostnameOverride, "hostname-override",
|
||||
"", "Custom node name used to override hostname")
|
||||
|
||||
@@ -36,8 +36,6 @@ const (
|
||||
updatePeriod = 1 * time.Second
|
||||
// resyncPeriod is the period at which condition manager does resync, only updates when needed.
|
||||
resyncPeriod = 10 * time.Second
|
||||
// heartbeatPeriod is the period at which condition manager does forcibly sync with apiserver.
|
||||
heartbeatPeriod = 1 * time.Minute
|
||||
)
|
||||
|
||||
// ConditionManager synchronizes node conditions with the apiserver with problem client.
|
||||
@@ -75,15 +73,18 @@ type conditionManager struct {
|
||||
client problemclient.Client
|
||||
updates map[string]types.Condition
|
||||
conditions map[string]types.Condition
|
||||
// heartbeatPeriod is the period at which condition manager does forcibly sync with apiserver.
|
||||
heartbeatPeriod time.Duration
|
||||
}
|
||||
|
||||
// NewConditionManager creates a condition manager.
|
||||
func NewConditionManager(client problemclient.Client, clock clock.Clock) ConditionManager {
|
||||
func NewConditionManager(client problemclient.Client, clock clock.Clock, heartbeatPeriod time.Duration) ConditionManager {
|
||||
return &conditionManager{
|
||||
client: client,
|
||||
clock: clock,
|
||||
updates: make(map[string]types.Condition),
|
||||
conditions: make(map[string]types.Condition),
|
||||
client: client,
|
||||
clock: clock,
|
||||
updates: make(map[string]types.Condition),
|
||||
conditions: make(map[string]types.Condition),
|
||||
heartbeatPeriod: heartbeatPeriod,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,7 +146,7 @@ func (c *conditionManager) needResync() bool {
|
||||
|
||||
// needHeartbeat checks whether a forcible heartbeat is needed.
|
||||
func (c *conditionManager) needHeartbeat() bool {
|
||||
return c.clock.Now().Sub(c.latestTry) >= heartbeatPeriod
|
||||
return c.clock.Now().Sub(c.latestTry) >= c.heartbeatPeriod
|
||||
}
|
||||
|
||||
// sync synchronizes node conditions with the apiserver.
|
||||
|
||||
@@ -31,10 +31,12 @@ import (
|
||||
"k8s.io/apimachinery/pkg/util/clock"
|
||||
)
|
||||
|
||||
const heartbeatPeriod = 1 * time.Minute
|
||||
|
||||
func newTestManager() (*conditionManager, *problemclient.FakeProblemClient, *clock.FakeClock) {
|
||||
fakeClient := problemclient.NewFakeProblemClient()
|
||||
fakeClock := clock.NewFakeClock(time.Now())
|
||||
manager := NewConditionManager(fakeClient, fakeClock)
|
||||
manager := NewConditionManager(fakeClient, fakeClock, heartbeatPeriod)
|
||||
return manager.(*conditionManager), fakeClient, fakeClock
|
||||
}
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@ func NewExporterOrDie(npdo *options.NodeProblemDetectorOptions) types.Exporter {
|
||||
|
||||
ke := k8sExporter{
|
||||
client: c,
|
||||
conditionManager: condition.NewConditionManager(c, clock.RealClock{}),
|
||||
conditionManager: condition.NewConditionManager(c, clock.RealClock{}, npdo.K8sExporterHeartbeatPeriod),
|
||||
}
|
||||
|
||||
ke.startHTTPReporting(npdo)
|
||||
|
||||
Reference in New Issue
Block a user