Skip to content

Commit 2796ff8

Browse files
authored
Merge pull request kubernetes#85279 from RainbowMango/pr_add_metrics_flag_to_proxy
Allow show hidden metrics in kube-proxy
2 parents 77c5650 + 6b33a77 commit 2796ff8

File tree

14 files changed

+56
-3
lines changed

14 files changed

+56
-3
lines changed

cmd/kube-proxy/app/BUILD

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,76 +82,87 @@ go_library(
8282
"//pkg/util/node:go_default_library",
8383
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
8484
"//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library",
85+
"//staging/src/k8s.io/component-base/metrics:go_default_library",
8586
"//vendor/k8s.io/utils/net:go_default_library",
8687
],
8788
"@io_bazel_rules_go//go/platform:darwin": [
8889
"//pkg/proxy/metrics:go_default_library",
8990
"//pkg/util/node:go_default_library",
9091
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
9192
"//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library",
93+
"//staging/src/k8s.io/component-base/metrics:go_default_library",
9294
"//vendor/k8s.io/utils/net:go_default_library",
9395
],
9496
"@io_bazel_rules_go//go/platform:dragonfly": [
9597
"//pkg/proxy/metrics:go_default_library",
9698
"//pkg/util/node:go_default_library",
9799
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
98100
"//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library",
101+
"//staging/src/k8s.io/component-base/metrics:go_default_library",
99102
"//vendor/k8s.io/utils/net:go_default_library",
100103
],
101104
"@io_bazel_rules_go//go/platform:freebsd": [
102105
"//pkg/proxy/metrics:go_default_library",
103106
"//pkg/util/node:go_default_library",
104107
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
105108
"//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library",
109+
"//staging/src/k8s.io/component-base/metrics:go_default_library",
106110
"//vendor/k8s.io/utils/net:go_default_library",
107111
],
108112
"@io_bazel_rules_go//go/platform:ios": [
109113
"//pkg/proxy/metrics:go_default_library",
110114
"//pkg/util/node:go_default_library",
111115
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
112116
"//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library",
117+
"//staging/src/k8s.io/component-base/metrics:go_default_library",
113118
"//vendor/k8s.io/utils/net:go_default_library",
114119
],
115120
"@io_bazel_rules_go//go/platform:linux": [
116121
"//pkg/proxy/metrics:go_default_library",
117122
"//pkg/util/node:go_default_library",
118123
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
119124
"//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library",
125+
"//staging/src/k8s.io/component-base/metrics:go_default_library",
120126
"//vendor/k8s.io/utils/net:go_default_library",
121127
],
122128
"@io_bazel_rules_go//go/platform:nacl": [
123129
"//pkg/proxy/metrics:go_default_library",
124130
"//pkg/util/node:go_default_library",
125131
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
126132
"//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library",
133+
"//staging/src/k8s.io/component-base/metrics:go_default_library",
127134
"//vendor/k8s.io/utils/net:go_default_library",
128135
],
129136
"@io_bazel_rules_go//go/platform:netbsd": [
130137
"//pkg/proxy/metrics:go_default_library",
131138
"//pkg/util/node:go_default_library",
132139
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
133140
"//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library",
141+
"//staging/src/k8s.io/component-base/metrics:go_default_library",
134142
"//vendor/k8s.io/utils/net:go_default_library",
135143
],
136144
"@io_bazel_rules_go//go/platform:openbsd": [
137145
"//pkg/proxy/metrics:go_default_library",
138146
"//pkg/util/node:go_default_library",
139147
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
140148
"//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library",
149+
"//staging/src/k8s.io/component-base/metrics:go_default_library",
141150
"//vendor/k8s.io/utils/net:go_default_library",
142151
],
143152
"@io_bazel_rules_go//go/platform:plan9": [
144153
"//pkg/proxy/metrics:go_default_library",
145154
"//pkg/util/node:go_default_library",
146155
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
147156
"//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library",
157+
"//staging/src/k8s.io/component-base/metrics:go_default_library",
148158
"//vendor/k8s.io/utils/net:go_default_library",
149159
],
150160
"@io_bazel_rules_go//go/platform:solaris": [
151161
"//pkg/proxy/metrics:go_default_library",
152162
"//pkg/util/node:go_default_library",
153163
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
154164
"//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library",
165+
"//staging/src/k8s.io/component-base/metrics:go_default_library",
155166
"//vendor/k8s.io/utils/net:go_default_library",
156167
],
157168
"@io_bazel_rules_go//go/platform:windows": [
@@ -162,6 +173,7 @@ go_library(
162173
"//pkg/windows/service:go_default_library",
163174
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
164175
"//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library",
176+
"//staging/src/k8s.io/component-base/metrics:go_default_library",
165177
],
166178
"//conditions:default": [],
167179
}),

cmd/kube-proxy/app/server.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,12 @@ func (o *Options) AddFlags(fs *pflag.FlagSet) {
150150
fs.StringVar(&o.master, "master", o.master, "The address of the Kubernetes API server (overrides any value in kubeconfig)")
151151
fs.StringVar(&o.hostnameOverride, "hostname-override", o.hostnameOverride, "If non-empty, will use this string as identification instead of the actual hostname.")
152152
fs.StringVar(&o.config.IPVS.Scheduler, "ipvs-scheduler", o.config.IPVS.Scheduler, "The ipvs scheduler type when proxy mode is ipvs")
153+
fs.StringVar(&o.config.ShowHiddenMetricsForVersion, "show-hidden-metrics-for-version", o.config.ShowHiddenMetricsForVersion,
154+
"The previous version for which you want to show hidden metrics. "+
155+
"Only the previous minor version is meaningful, other values will not be allowed. "+
156+
"The format is <major>.<minor>, e.g.: '1.16'. "+
157+
"The purpose of this format is make sure you have the opportunity to notice if the next release hides additional metrics, "+
158+
"rather than being surprised when they are permanently removed in the release after that.")
153159

154160
fs.StringSliceVar(&o.config.IPVS.ExcludeCIDRs, "ipvs-exclude-cidrs", o.config.IPVS.ExcludeCIDRs, "A comma-separated list of CIDR's which the ipvs proxier should not touch when cleaning up IPVS rules.")
155161
fs.StringSliceVar(&o.config.NodePortAddresses, "nodeport-addresses", o.config.NodePortAddresses,

cmd/kube-proxy/app/server_others.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,15 @@ import (
3232
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
3333
utilfeature "k8s.io/apiserver/pkg/util/feature"
3434
"k8s.io/client-go/tools/record"
35+
"k8s.io/component-base/metrics"
3536
"k8s.io/kubernetes/pkg/features"
3637
"k8s.io/kubernetes/pkg/proxy"
3738
proxyconfigapi "k8s.io/kubernetes/pkg/proxy/apis/config"
3839
proxyconfigscheme "k8s.io/kubernetes/pkg/proxy/apis/config/scheme"
3940
"k8s.io/kubernetes/pkg/proxy/healthcheck"
4041
"k8s.io/kubernetes/pkg/proxy/iptables"
4142
"k8s.io/kubernetes/pkg/proxy/ipvs"
42-
"k8s.io/kubernetes/pkg/proxy/metrics"
43+
proxymetrics "k8s.io/kubernetes/pkg/proxy/metrics"
4344
"k8s.io/kubernetes/pkg/proxy/userspace"
4445
"k8s.io/kubernetes/pkg/util/configz"
4546
utilipset "k8s.io/kubernetes/pkg/util/ipset"
@@ -105,6 +106,10 @@ func newProxyServer(
105106
}, nil
106107
}
107108

109+
if len(config.ShowHiddenMetricsForVersion) > 0 {
110+
metrics.SetShowHidden()
111+
}
112+
108113
client, eventClient, err := createClients(config.ClientConnection, master)
109114
if err != nil {
110115
return nil, err
@@ -167,7 +172,7 @@ func newProxyServer(
167172
if err != nil {
168173
return nil, fmt.Errorf("unable to create proxier: %v", err)
169174
}
170-
metrics.RegisterMetrics()
175+
proxymetrics.RegisterMetrics()
171176
} else if proxyMode == proxyModeIPVS {
172177
klog.V(0).Info("Using ipvs Proxier.")
173178
if utilfeature.DefaultFeatureGate.Enabled(features.IPv6DualStack) {
@@ -234,7 +239,7 @@ func newProxyServer(
234239
if err != nil {
235240
return nil, fmt.Errorf("unable to create proxier: %v", err)
236241
}
237-
metrics.RegisterMetrics()
242+
proxymetrics.RegisterMetrics()
238243
} else {
239244
klog.V(0).Info("Using userspace Proxier.")
240245

cmd/kube-proxy/app/server_windows.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import (
3232
"k8s.io/apimachinery/pkg/types"
3333
utilnet "k8s.io/apimachinery/pkg/util/net"
3434
"k8s.io/client-go/tools/record"
35+
"k8s.io/component-base/metrics"
3536
"k8s.io/kubernetes/pkg/proxy"
3637
proxyconfigapi "k8s.io/kubernetes/pkg/proxy/apis/config"
3738
proxyconfigscheme "k8s.io/kubernetes/pkg/proxy/apis/config/scheme"
@@ -67,6 +68,10 @@ func newProxyServer(config *proxyconfigapi.KubeProxyConfiguration, cleanupAndExi
6768
return &ProxyServer{}, nil
6869
}
6970

71+
if len(config.ShowHiddenMetricsForVersion) > 0 {
72+
metrics.SetShowHidden()
73+
}
74+
7075
client, eventClient, err := createClients(config.ClientConnection, master)
7176
if err != nil {
7277
return nil, err

cmd/kubeadm/app/componentconfigs/kubeproxy_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ var kubeProxyMarshalCases = []struct {
8686
nodePortAddresses: null
8787
oomScoreAdj: null
8888
portRange: ""
89+
showHiddenMetricsForVersion: ""
8990
udpIdleTimeout: 0s
9091
winkernel:
9192
enableDSR: false
@@ -140,6 +141,7 @@ var kubeProxyMarshalCases = []struct {
140141
nodePortAddresses: null
141142
oomScoreAdj: null
142143
portRange: ""
144+
showHiddenMetricsForVersion: ""
143145
udpIdleTimeout: 0s
144146
winkernel:
145147
enableDSR: false

pkg/proxy/apis/config/scheme/testdata/KubeProxyConfiguration/after/__internal.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ Mode: ""
3535
NodePortAddresses: null
3636
OOMScoreAdj: null
3737
PortRange: ""
38+
ShowHiddenMetricsForVersion: ""
3839
UDPIdleTimeout: 0s
3940
Winkernel:
4041
EnableDSR: false

pkg/proxy/apis/config/scheme/testdata/KubeProxyConfiguration/after/v1alpha1.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ mode: ""
3636
nodePortAddresses: null
3737
oomScoreAdj: -999
3838
portRange: ""
39+
showHiddenMetricsForVersion: ""
3940
udpIdleTimeout: 250ms
4041
winkernel:
4142
enableDSR: false

pkg/proxy/apis/config/scheme/testdata/KubeProxyConfiguration/v1alpha1To__internal/empty.yaml.after_roundtrip

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ Mode: ""
3535
NodePortAddresses: null
3636
OOMScoreAdj: -999
3737
PortRange: ""
38+
ShowHiddenMetricsForVersion: ""
3839
UDPIdleTimeout: 250ms
3940
Winkernel:
4041
EnableDSR: false

pkg/proxy/apis/config/scheme/testdata/KubeProxyConfiguration/v1alpha1Tov1alpha1/empty.yaml.after_roundtrip

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ mode: ""
3636
nodePortAddresses: null
3737
oomScoreAdj: -999
3838
portRange: ""
39+
showHiddenMetricsForVersion: ""
3940
udpIdleTimeout: 250ms
4041
winkernel:
4142
enableDSR: false

pkg/proxy/apis/config/types.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,8 @@ type KubeProxyConfiguration struct {
162162
NodePortAddresses []string
163163
// winkernel contains winkernel-related configuration options.
164164
Winkernel KubeProxyWinkernelConfiguration
165+
// ShowHiddenMetricsForVersion is the version for which you want to show hidden metrics.
166+
ShowHiddenMetricsForVersion string
165167
}
166168

167169
// Currently, three modes of proxy are available in Linux platform: 'userspace' (older, going to be EOL), 'iptables'

0 commit comments

Comments
 (0)