mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 19:56:01 +00:00
Enabling kube-proxy metrics on windows kernel mode
This commit is contained in:
parent
a8c9dd6274
commit
8b37bfec8e
@ -141,6 +141,8 @@ func newProxyServer(config *proxyconfigapi.KubeProxyConfiguration, cleanupAndExi
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("unable to create proxier: %v", err)
|
||||
}
|
||||
|
||||
winkernel.RegisterMetrics()
|
||||
} else {
|
||||
klog.V(0).InfoS("Using userspace Proxier.")
|
||||
klog.V(0).InfoS("The userspace proxier is now deprecated and will be removed in a future release, please use 'kernelspace' instead")
|
||||
|
@ -19,40 +19,21 @@ package winkernel
|
||||
import (
|
||||
"sync"
|
||||
|
||||
"k8s.io/component-base/metrics"
|
||||
"k8s.io/component-base/metrics/legacyregistry"
|
||||
)
|
||||
|
||||
const kubeProxySubsystem = "kubeproxy"
|
||||
|
||||
var (
|
||||
SyncProxyRulesLatency = metrics.NewHistogram(
|
||||
&metrics.HistogramOpts{
|
||||
Subsystem: kubeProxySubsystem,
|
||||
Name: "sync_proxy_rules_duration_seconds",
|
||||
Help: "SyncProxyRules latency in seconds",
|
||||
Buckets: metrics.ExponentialBuckets(0.001, 2, 15),
|
||||
StabilityLevel: metrics.ALPHA,
|
||||
},
|
||||
)
|
||||
|
||||
// SyncProxyRulesLastTimestamp is the timestamp proxy rules were last
|
||||
// successfully synced.
|
||||
SyncProxyRulesLastTimestamp = metrics.NewGauge(
|
||||
&metrics.GaugeOpts{
|
||||
Subsystem: kubeProxySubsystem,
|
||||
Name: "sync_proxy_rules_last_timestamp_seconds",
|
||||
Help: "The last time proxy rules were successfully synced",
|
||||
StabilityLevel: metrics.ALPHA,
|
||||
},
|
||||
)
|
||||
"k8s.io/kubernetes/pkg/proxy/metrics"
|
||||
)
|
||||
|
||||
var registerMetricsOnce sync.Once
|
||||
|
||||
// RegisterMetrics registers kube-proxy metrics for Windows modes.
|
||||
func RegisterMetrics() {
|
||||
registerMetricsOnce.Do(func() {
|
||||
legacyregistry.MustRegister(SyncProxyRulesLatency)
|
||||
legacyregistry.MustRegister(SyncProxyRulesLastTimestamp)
|
||||
legacyregistry.MustRegister(metrics.SyncProxyRulesLatency)
|
||||
legacyregistry.MustRegister(metrics.SyncProxyRulesLastTimestamp)
|
||||
legacyregistry.MustRegister(metrics.EndpointChangesPending)
|
||||
legacyregistry.MustRegister(metrics.EndpointChangesTotal)
|
||||
legacyregistry.MustRegister(metrics.ServiceChangesPending)
|
||||
legacyregistry.MustRegister(metrics.ServiceChangesTotal)
|
||||
legacyregistry.MustRegister(metrics.SyncProxyRulesLastQueuedTimestamp)
|
||||
})
|
||||
}
|
||||
|
@ -972,17 +972,19 @@ func (proxier *Proxier) syncProxyRules() {
|
||||
proxier.mu.Lock()
|
||||
defer proxier.mu.Unlock()
|
||||
|
||||
start := time.Now()
|
||||
defer func() {
|
||||
SyncProxyRulesLatency.Observe(metrics.SinceInSeconds(start))
|
||||
klog.V(4).InfoS("Syncing proxy rules complete", "elapsed", time.Since(start))
|
||||
}()
|
||||
// don't sync rules till we've received services and endpoints
|
||||
if !proxier.isInitialized() {
|
||||
klog.V(2).InfoS("Not syncing hns until Services and Endpoints have been received from master")
|
||||
return
|
||||
}
|
||||
|
||||
// Keep track of how long syncs take.
|
||||
start := time.Now()
|
||||
defer func() {
|
||||
metrics.SyncProxyRulesLatency.Observe(metrics.SinceInSeconds(start))
|
||||
klog.V(4).InfoS("Syncing proxy rules complete", "elapsed", time.Since(start))
|
||||
}()
|
||||
|
||||
hnsNetworkName := proxier.network.name
|
||||
hns := proxier.hns
|
||||
|
||||
@ -1310,7 +1312,7 @@ func (proxier *Proxier) syncProxyRules() {
|
||||
if proxier.healthzServer != nil {
|
||||
proxier.healthzServer.Updated()
|
||||
}
|
||||
SyncProxyRulesLastTimestamp.SetToCurrentTime()
|
||||
metrics.SyncProxyRulesLastTimestamp.SetToCurrentTime()
|
||||
|
||||
// Update service healthchecks. The endpoints list might include services that are
|
||||
// not "OnlyLocal", but the services list will not, and the serviceHealthServer
|
||||
|
Loading…
Reference in New Issue
Block a user