mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 12:43:23 +00:00
Merge pull request #106581 from knabben/win-kernel-kproxy-metrics
Registering kube-proxy metrics on windows kernel mode
This commit is contained in:
commit
68b53cf940
@ -141,6 +141,8 @@ func newProxyServer(config *proxyconfigapi.KubeProxyConfiguration, cleanupAndExi
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("unable to create proxier: %v", err)
|
return nil, fmt.Errorf("unable to create proxier: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
winkernel.RegisterMetrics()
|
||||||
} else {
|
} else {
|
||||||
klog.V(0).InfoS("Using userspace Proxier.")
|
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")
|
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 (
|
import (
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"k8s.io/component-base/metrics"
|
|
||||||
"k8s.io/component-base/metrics/legacyregistry"
|
"k8s.io/component-base/metrics/legacyregistry"
|
||||||
)
|
"k8s.io/kubernetes/pkg/proxy/metrics"
|
||||||
|
|
||||||
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,
|
|
||||||
},
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var registerMetricsOnce sync.Once
|
var registerMetricsOnce sync.Once
|
||||||
|
|
||||||
|
// RegisterMetrics registers kube-proxy metrics for Windows modes.
|
||||||
func RegisterMetrics() {
|
func RegisterMetrics() {
|
||||||
registerMetricsOnce.Do(func() {
|
registerMetricsOnce.Do(func() {
|
||||||
legacyregistry.MustRegister(SyncProxyRulesLatency)
|
legacyregistry.MustRegister(metrics.SyncProxyRulesLatency)
|
||||||
legacyregistry.MustRegister(SyncProxyRulesLastTimestamp)
|
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()
|
proxier.mu.Lock()
|
||||||
defer proxier.mu.Unlock()
|
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
|
// don't sync rules till we've received services and endpoints
|
||||||
if !proxier.isInitialized() {
|
if !proxier.isInitialized() {
|
||||||
klog.V(2).InfoS("Not syncing hns until Services and Endpoints have been received from master")
|
klog.V(2).InfoS("Not syncing hns until Services and Endpoints have been received from master")
|
||||||
return
|
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
|
hnsNetworkName := proxier.network.name
|
||||||
hns := proxier.hns
|
hns := proxier.hns
|
||||||
|
|
||||||
@ -1310,7 +1312,7 @@ func (proxier *Proxier) syncProxyRules() {
|
|||||||
if proxier.healthzServer != nil {
|
if proxier.healthzServer != nil {
|
||||||
proxier.healthzServer.Updated()
|
proxier.healthzServer.Updated()
|
||||||
}
|
}
|
||||||
SyncProxyRulesLastTimestamp.SetToCurrentTime()
|
metrics.SyncProxyRulesLastTimestamp.SetToCurrentTime()
|
||||||
|
|
||||||
// Update service healthchecks. The endpoints list might include services that are
|
// Update service healthchecks. The endpoints list might include services that are
|
||||||
// not "OnlyLocal", but the services list will not, and the serviceHealthServer
|
// not "OnlyLocal", but the services list will not, and the serviceHealthServer
|
||||||
|
Loading…
Reference in New Issue
Block a user