Commit Graph

2113 Commits

Author SHA1 Message Date
Dan Winship
626f349fef Drop PendingChanges methods from change trackers, move into UpdateResults
This fixes a race condition where the tracker could be updated in
between us calling .PendingChanges() and .Update().
2023-12-19 18:27:33 -05:00
Dan Winship
5d0656b1f6 Squash some unnecessarily-chained methods in the change trackers
ServicePortMap.Update() and EndpointsMap.Update() were just a tiny
wrappers around the corresponding apply() methods, which had no other
callers. So squash them together.

(Also fix the variable naming in ServicePortMap.Update() to match
other methods.)
2023-12-19 18:27:33 -05:00
Dan Winship
c1ce1e00ee Properly build-tag the Linux kube-proxy backend code
This had to be able to build on OS X before to make verify-typecheck
pass, but now that that's fixed we can tag the code properly as being
linux-only.
2023-12-18 20:20:51 -05:00
Dan Winship
b69510b069 Remove an unnecessary abstraction
safeIpset was a wrapper for thread-safely sharing an ipset.IPSet, but
this was unnecessary because ipset.IPSet is just a wrapper around exec
anyway and doesn't need any locking.
2023-12-18 19:58:47 -05:00
Kubernetes Prow Robot
8a9e0d936a
Merge pull request #121919 from uablrek/etp-local-externalips
kube-proxy: Fix etp:Local for externalIPs
2023-12-14 08:50:04 +01:00
Kubernetes Prow Robot
b54e719509
Merge pull request #122111 from danwinship/proxy-chain-creation-cleanup
proxy chain creation cleanup
2023-12-14 06:17:40 +01:00
Kubernetes Prow Robot
60cde601a8
Merge pull request #121814 from danwinship/kubemark-iptables
Remove --use-real-proxier support from kubemark
2023-12-13 23:55:01 +01:00
Kubernetes Prow Robot
de6a37bbad
Merge pull request #121744 from uablrek/ipvs-remove-sorting
Remove unnecessary sort in kube-proxy ipvs
2023-12-13 22:35:54 +01:00
Dan Winship
8acf185791 Use a generic Set for utiliptables.GetChainsFromTable 2023-11-29 11:12:27 -05:00
Dan Winship
7cedc3d741 Simplify creation/tracking of chains
In the original version of "MinimizeIPTablesRestore", we skipped the
bottom half of the sync loop when we weren't re-syncing a service, so
certain things that couldn't be skipped had to be done in the top
half. But the code was later changed to always run through the whole
loop body (just not necessarily writing out rules in the bottom half),
so we can reorganize things now to put some related bits of code back
together.

(In particular, this also resolves the fact that we were accidentally
adding the endpoint chains to activeNATChains twice.)

Also change activeNATChains to be a proper generic Set type.
2023-11-29 11:12:20 -05:00
Lars Ekman
19da26005b kube-proxy: Fix etp:Local for externalIPs
The problem was introduced by PR #108460
2023-11-16 09:15:13 +01:00
Dan Winship
2017fb2ec5 Fix "go test -count=2 ./pkg/proxy/iptables"
If you run the tests multiple times, the "partial restore failures"
metric didn't get reset in between.
2023-11-11 08:41:53 -05:00
Dan Winship
ae3235aa01 Remove --use-real-proxier support from kubemark
kubemark's proxy mode exists to test how kube-proxy affects the load
on the apiserver, not how it affects the load on the node. There's no
need to generate fake iptables commands, because that all happens
entirely independently of the api watchers.
2023-11-09 06:52:10 -05:00
Lars Ekman
d78a794be2 Remove unnecessary sort in kube-proxy ipvs
Sorting of endpoints before adding them to ipvs is not
needed, nor wanted. It just takes time
2023-11-06 14:57:18 +01:00
Dan Winship
0993bb78ef Redo service dispatch with maps 2023-10-31 17:54:53 -04:00
Dan Winship
9d71513ac1 Redo no-endpoint handling with maps 2023-10-31 17:54:53 -04:00
Dan Winship
4128631d0f Redo LoadBalancerSourceRanges firewall using sets 2023-10-31 17:54:53 -04:00
Dan Winship
edaa1d735b Redo --nodeport-addresses handling with a set 2023-10-31 17:54:53 -04:00
Dan Winship
ef1347b06d Port NAT rules to nftables (and backend is now functional) 2023-10-31 17:54:51 -04:00
Dan Winship
0c5c620b4f Port filter rules to nftables 2023-10-31 17:40:45 -04:00
Dan Winship
6cff415305 Port service/endpoint chain creation/cleanup to nftables 2023-10-31 17:40:45 -04:00
Dan Winship
2735ad541e Port table setup/cleanup code to nftables 2023-10-31 17:40:30 -04:00
Dan Winship
bcced184c5 Replace "iptables-restore" sync in nftables/proxier.go with (trivial) "nft -f -" sync 2023-10-31 17:38:32 -04:00
Dan Winship
93860a5217 Distinguish iptables-based and nftables-based backends, do startup cleanup
When switching from iptables or ipvs to nftables, clean up old
iptables/ipvs rules. When switching the other way, clean up old
nftables rules.
2023-10-31 17:38:32 -04:00
Dan Winship
abb1a458a9 Create an nftables.Interface in nftables proxier
And update most of the comments to refer to "nftables" rather than
"iptables" (even though it doesn't actually do any nftables updating
at this point).

For now the proxy also internally creates a
utiliptablestesting.FakeIPTables to keep the existing sync code
compiling.
2023-10-31 17:38:29 -04:00
Dan Winship
1a530457f9 Drop unit tests of iptables-specific unit test helpers
(We'll eventually have nftables versions.)
2023-10-31 17:33:53 -04:00
Dan Winship
958e80ca3b Clarify nftables/proxier.go by distinguishing nat/filter table KUBE-SERVICES chains
(It is confusing, but allowed, to have distinct "KUBE-SERVICES" chains
in "nat" and "filter" in iptables, but in nftables the "type nat" and
"type filter" chains end up in the same table, so we'll need different
names for the two.)
2023-10-31 17:33:53 -04:00
Dan Winship
3abdda9800 Simplify nftables/proxier.go by using string rather than utiliptables.Chain
Change the svcPortInfo and endpointInfo fields to string rather than
utiliptables.Chain, and various fixups from there.

Also use a proper set for activeNATChains, and fix the capitalization
of endpointInfo.chainName.
2023-10-31 17:33:53 -04:00
Dan Winship
96e53f64f4 Simplify nftables/proxier.go by removing the "args" reuse
since that will be done differently in nftables
2023-10-31 17:33:53 -04:00
Dan Winship
6535ac1e61 Simplify nftables/proxier.go by removing Monitor stuff
since it shouldn't be necessary
2023-10-31 17:33:53 -04:00
Dan Winship
ecb7752f0b Simplify nftables/proxier.go by removing HaveRandomFully checks 2023-10-31 17:33:53 -04:00
Dan Winship
5f09106063 Simplify nftables/proxier.go by dropping "-j ACCEPT" rules 2023-10-31 17:33:53 -04:00
Dan Winship
1a6b9b811e Simplify nftables/proxier.go by removing localhost nodeport support
and related route_localnet setting / anti-martian-packet rule
2023-10-31 17:33:53 -04:00
Dan Winship
e7c35d27f7 Simplify nftables/proxier.go by removing partial syncing
Since optimization will be done differently in nftables.
2023-10-31 17:33:53 -04:00
Dan Winship
39a5af1d0a Simplify nftables/proxier.go by removing large-cluster mode
since things will be optimized differently in nftables
2023-10-31 17:33:53 -04:00
Dan Winship
a70653143e Add a dummy nftables kube-proxy backend which is just a copy of iptables 2023-10-31 17:31:42 -04:00
Kubernetes Prow Robot
0c93f40374
Merge pull request #120995 from aroradaman/move-get-kernel-version
move GetKernelVersion out of pkg/proxy/ipvs
2023-10-31 20:23:41 +01:00
Kubernetes Prow Robot
5d03ce7ae4
Merge pull request #120354 from aroradaman/proxy-conntrack-api
Add support for `nf_conntrack_tcp_be_liberal` sysctl to kube-proxy
2023-10-31 19:15:44 +01:00
Kubernetes Prow Robot
b8693aafdf
Merge pull request #120104 from togettoyou/cleanup_endpoints
cleanup: Refactor BaseEndpointInfo to cache IP and Port values
2023-10-28 06:18:26 +02:00
Daman Arora
9ae77364e9 pkg/proxy: configure tcp-be-liberal
Signed-off-by: Daman Arora <aroradaman@gmail.com>
2023-10-28 01:11:24 +05:30
Daman Arora
a375aa28ee pkg/proxy: move get kernel version out of ipvs proxier
Signed-off-by: Daman Arora <aroradaman@gmail.com>
2023-10-28 00:54:34 +05:30
Junhao Zou
7a91051caa cleanup: Refactor BaseEndpointInfo to cache IP and Port values 2023-10-28 00:09:44 +08:00
Dan Winship
fcc55280b0
Use k8s.io/utils/ptr in pkg/proxy (#121154)
* Use k8s.io/utils/ptr in pkg/proxy

* Replace pointer.String(), pointer.StringPtr(), and pointer.Bool() with ptr.To()

* Replace pointer.Int32(constexpr) with ptr.To[int32](constexpr)

* Replace pointer.Int32(int32(var)) with ptr.To(int32(var))

* Replace remaining pointer.Int32() cases with ptr.To

* Replace 'tcpProtocol := v1.ProtocolTCP; ... &tcpProtocol', etc with ptr.To(v1.ProtocolTCP)

* Replace 'nodeName = testHostname; ... &nodeName' with ptr.To(testHostname)

* Use ptr.To for SessionAffinityConfig.ClientIP.TimeoutSeconds

* Use ptr.To for InternalTrafficPolicy

* Use ptr.To for LoadBalancer.Ingress.IPMode
2023-10-26 20:56:39 +02:00
Kubernetes Prow Robot
5fbc278d94
Merge pull request #121097 from danwinship/BaseEndpointInfo-fixes
BaseEndpointInfo cleanup
2023-10-26 01:07:56 +02:00
Kubernetes Prow Robot
06a7febe00
Merge pull request #120864 from uablrek/kube-proxy-init
kube-proxy: Optionally do privileged configs only
2023-10-25 21:28:47 +02:00
Dan Winship
f91228ee71 Unexport BaseEndpointInfo fields, fix getter names
BaseEndpointInfo's fields, unlike BaseServicePortInfo's, were all
exported, which then required adding "Get" before some of the function
names in Endpoint so they wouldn't conflict.

Fix that, now that the iptables and ipvs unit tests don't need to be
able to construct BaseEndpointInfos by hand.
2023-10-25 09:00:46 -04:00
Dan Winship
e3357d0c5f Clean up Endpoint / BaseEndpointInfo a bit
Remove NodeName, which was unused because we only care about IsLocal
which was tracked separately.

Remove Zone, which was unused because it's from the old topology
system?

Fix up some comments which still referred to Endpoints vs
EndpointSlice differences.

Also remove an unhelpful helper function in endpoints_test.go
2023-10-25 08:59:53 -04:00
Dan Winship
2879ec10d5 Rewrite ipvs/iptables tests that manually construct BaseEndpointInfo
The tests in pkg/proxy already test that EndpointSlice ->
BaseEndpointInfo conversion works correctly; all we need to test in
pkg/proxy/ipvs and pkg/proxy/iptables is that the correct set of
endpoints get picked out where we expect them to, which doesn't
require us to compare the complete BaseEndpointInfo objects.
2023-10-25 08:59:53 -04:00
Kubernetes Prow Robot
d2383ce467
Merge pull request #121457 from SteveProXNA/stevepro-topology-endpoint-logging
Add endpoint to skip topology aware log when missing zone hint
2023-10-24 17:10:45 +02:00
Lars Ekman
4b59d2b05c kube-proxy: Optionally do privileged configs only
A new --init-only flag is added tha makes kube-proxy perform
configuration that requires privileged mode and exit. It is
intended to be executed in a privileged initContainer, while
the main container may run with a stricter securityContext
2023-10-24 07:01:31 +02:00
Kubernetes Prow Robot
441d4b54ae
Merge pull request #120397 from ty-dc/StaticCheck
cleanup: omit comparison with bool constants
2023-10-24 05:25:52 +02:00
Kubernetes Prow Robot
b5ba899dfa
Merge pull request #118146 from aroradaman/fix/proxy-healthzserver
proxy healthz server for dualstack clusters
2023-10-16 21:19:25 +02:00
Daman Arora
bfda244e54 pkg/proxy: dual stack health checker
Signed-off-by: Daman Arora <aroradaman@gmail.com>
2023-10-16 16:11:18 +05:30
Daman Arora
4ea6ec738c pkg/proxy: add an ipFamily field to the winkernel proxier
Signed-off-by: Daman Arora <aroradaman@gmail.com>
2023-10-15 19:55:09 +05:30
Kubernetes Prow Robot
cf54acce5c
Merge pull request #120274 from danwinship/kube-proxy-config-docs
kube-proxy config/CLI doc fixups
2023-10-15 02:56:24 +02:00
Kubernetes Prow Robot
6bc2f2ec22
Merge pull request #118729 from danwinship/endpoint-naming
Fix endpoint-related names to use consistent singular/plural
2023-10-12 05:13:38 +02:00
Kubernetes Prow Robot
b47aa1c20e
Merge pull request #120808 from aroradaman/proxy-conntrack-udp-timeouts
Adding option to configure UDP timeouts for conntrack
2023-10-12 01:59:55 +02:00
Daman Arora
15ae6cc160 pkg/proxy: add flag to configure udp conntrack timeouts
Signed-off-by: Daman Arora <aroradaman@gmail.com>
2023-10-12 03:08:21 +05:30
Kubernetes Prow Robot
86a0b1c57a
Merge pull request #119791 from aroradaman/fix/ipvs-source-ranges
Hardening LB SourceRanges filtering for IPVS proxier
2023-10-11 11:46:11 +02:00
Dan Winship
6c395eb098 Fix "Endpoint" vs "Endpoints" in proxy type names
The use of "Endpoint" vs "Endpoints" in these type names is tricky
because it doesn't always make sense to use the same singular/plural
convention as the corresonding service-related types, since often the
service-related type is referring to a single service while the
endpoint-related type is referring to multiple endpoint IPs.

The "endpointsInfo" types in the iptables and winkernel proxiers are
now "endpointInfo" because they describe a single endpoint IP (and
wrap proxy.BaseEndpointInfo).

"UpdateEndpointMapResult" is now "UpdateEndpointsMapResult", because
it is the result of EndpointsMap.Update (and it's clearly correct for
EndpointsMap to have plural "Endpoints" because it's a map to an array
of proxy.Endpoint objects.)

"EndpointChangeTracker" is now "EndpointsChangeTracker" because it
tracks changes to the full set of endpoints for a particular service
(and the new name matches the existing "endpointsChange" type and
"Proxier.endpointsChanges" fields.)
2023-10-09 17:21:12 -04:00
Daman Arora
62683c8d95 pkg/proxy/ipvs: hardening lb source ranges filtering
Signed-off-by: Daman Arora <aroradaman@gmail.com>
2023-10-08 20:57:17 +05:30
Kubernetes Prow Robot
ed72ee264e
Merge pull request #120829 from danwinship/proxy-rule-testing-cleanup
iptables proxy test cleanups, moving away from assertIPTablesRulesEqual
2023-10-01 09:50:56 -07:00
Dan Winship
6c9ddf300c update generated 2023-09-30 10:19:10 -04:00
Dan Winship
9242cb1934 Rearrange kube-proxy config fields / CLI flags to make more sense. 2023-09-30 10:19:07 -04:00
Dan Winship
44cb330aa0 Improve kube-proxy config / CLI documentation 2023-09-30 10:18:16 -04:00
Dan Winship
2b973806bc Remove remaining unnecessary assertIPTablesRulesEqual checks
TestLoadBalancer and TestHealthCheckNodePort still had iptables rules
checks, but they also have sufficient runPacketFlowTests checks to
cover everything we care about.

(This leaves only TestOverallIPTablesRules and
TestSyncProxyRulesRepeated using assertIPTablesRulesEqual.)
2023-09-26 13:01:25 -04:00
Dan Winship
de077f448e Rename TestNonLocalExternalIPs to TestExternalTrafficPolicyCluster
For consistency with TestExternalTrafficPolicyLocal, test all of the
Cluster external traffic policy cases together here (ensuring that
masquerading happens where needed). Drop the assertIPTablesRulesEqual
test in favor of runPacketFlowTests.
2023-09-26 13:01:25 -04:00
Dan Winship
19f19e2f4f Merge the ExternalTrafficPolicy: Local tests together
Merge TestOnlyLocalExternalIPs, TestOnlyLocalLoadBalancing, and
TestOnlyLocalNodePorts together into TestExternalTrafficPolicyLocal.
Drop the assertIPTablesRulesEqual tests in favor of
runPacketFlowTests.

Remove TestOnlyLocalNodePortsNoClusterCIDR; the relevant bits of the
"no local detector" case are already fully covered by
TestInternalExternalMasquerade.
2023-09-26 13:01:23 -04:00
Dan Winship
ff5f5bc161 Merge several NodePort tests into TestNodePorts
Previously we had TestNodePort, which tested basic NodePort behavior,
plus Test{Enable,Disable}LocalhostNodePorts{IPv4,IPv6} to test the
behavior of --localhost-nodeports under IPv4 and IPv6, plus
TestDisableLocalhostNodePortsIPv4WithNodeAddress to test
--nodeport-addresses.

Merge all of these together into TestNodePorts, and use
runPacketFlowTests to check the results rather than
assertIPTablesRulesEqual.

The packet tracer is not full-featured enough to be able to check the
"anti martian packet spoofing" rule, so we check the iptables dump for
that manually.

(This also fixes the --localhost-nodeport tests to use the same IP
ranges as most of the other tests now.)
2023-09-26 12:01:28 -04:00
Dan Winship
f38231d568 Merge all the "reject when no endpoints" tests together
Merge TestClusterIPReject, TestExternalIPsReject, TestNodePortReject,
and TestLoadBalancerReject into a single test.

Also remove the assertIPTablesRulesEqual tests because the packet flow
tests cover all of the details we care about here.
2023-09-26 12:00:19 -04:00
Dan Winship
2435da11d5 Rewrite TestClusterIPEndpointsMore as TestClusterIPGeneral
Create some ClusterIP services and use runPacketFlowTests to test
general functionality:

  - normal connection
  - hairpin connection
  - multiple endpoints
  - port != targetPort
  - multiple protocols on same port

Remove the assertIPTablesRulesEqual test because the packet flow tests
cover all of the details we care about here.
2023-09-26 12:00:19 -04:00
Dan Winship
ce7ffa8175 Extend iptables packet tracer to support multiple node IPs 2023-09-26 12:00:17 -04:00
dhruvmehtaaa
7c5219438d Remove an old compatibility check/warning 2023-09-24 20:08:40 +05:30
Dan Winship
0910fe4b98 Extend iptables packet tracer to check the protocol 2023-09-22 11:41:21 -04:00
Dan Winship
a25fb03c00 Add assertIPTablesChainEquals, to streamline a few tests
Rather than checking the entire iptables dump, only check a single
chain.
2023-09-22 11:41:21 -04:00
Dan Winship
0ab0e404b8 Drop the now-unused assertIPTablesRulesNotEqual
Previously this was used to assert "something changed since the last
sync", but we already have packet flow tests in all of those cases now
to assert that the *specific* something we care about changed.
2023-09-22 11:41:21 -04:00
Dan Winship
4438f5e436 Remove assertIPTablesRulesEqual checks from terminating endpoints tests
The flow tests sufficiently check the results.

Also remove some irrelevant bits of the Service definition that don't
affect these tests.
2023-09-22 11:41:17 -04:00
Dan Winship
d57a51d0a9 Remove assertIPTablesRulesEqual from InternalTrafficPolicy test
Just use the flow tests. Also, add a new test for a missing case.
2023-09-22 11:07:53 -04:00
Dan Winship
43db55e93d Rename and extend TestOverallIPTablesRulesWithMultipleServices
Rename TestOverallIPTablesRulesWithMultipleServices to just
TestOverallIPTablesRules, and add one rule type we weren't previously
testing (session affinity).
2023-09-22 11:06:45 -04:00
Dan Winship
b489beb365 Remove an old compatibility check/warning
It was IPv4-specific but nobody ever noticed this or reported the lack
of IPv6 check as a problem, suggesting that it is no longer needed.
2023-09-21 16:49:23 -04:00
Prince Pereira
1a27531d2e Fix for Kubeproxy Mock framework where hcn object is holding always new object and not the pointer reference. 2023-09-18 11:59:01 +05:30
pegasas
f446745777 Improve logging on kube-proxy exit 2023-09-11 00:50:29 +08:00
Kubernetes Prow Robot
80cd9d7a9a
Merge pull request #120105 from princepereira/ppereira-kubeproxy-mock-tests
New mock test framework for windows kubeproxy.
2023-09-08 00:32:14 -07:00
Prince Pereira
7dea3d6c3b New mock test framework for windows kubeproxy. 2023-09-08 08:38:46 +05:30
Antonio Ojea
933bcc123b only drop invalid cstate packets if non liberal
Conntrack invalid packets may cause unexpected and subtle bugs
on esblished connections, because of that we install by default an
iptables rules that drops the packets with this conntrack state.

However, there are network scenarios, specially those that use multihoming
nodes, that may have legit traffic that is detected by conntrack as
invalid, hence these iptables rules are causing problems dropping this
traffic.

An alternative to solve the spurious problems caused by the invalid
connectrack packets is to set the sysctl nf_conntrack_tcp_be_liberal
option, but this is a system wide setting and we don't want kube-proxy
to be opinionated about the whole node networking configuration.

Kube-proxy will only install the DROP rules for invalid conntrack states
if the nf_conntrack_tcp_be_liberal is not set.

Change-Id: I5eb326931ed915f5ae74d210f0a375842b6a790e
2023-09-05 14:16:17 +00:00
tao.yang
b35357b6c0 cleanup: omit comparison with bool constants
Signed-off-by: tao.yang <tao.yang@daocloud.io>
2023-09-05 10:24:38 +08:00
Kubernetes Prow Robot
d4050a80c7
Merge pull request #119394 from aroradaman/fix/proxy-conntrack
Fix stale conntrack flow detection logic
2023-09-03 14:53:46 -07:00
Daman Arora
2e5f17166b pkg/proxy: fix stale detection logic
Signed-off-by: Daman Arora <aroradaman@gmail.com>
2023-09-02 12:45:19 +05:30
Daman Arora
01df59a73b pkg/proxy: remove equal method from endpoint interface
Signed-off-by: Daman Arora <aroradaman@gmail.com>
2023-08-27 18:16:44 +05:30
Antonio Ojea
5c7529a6fc kube-proxy service cache don't treat ipMode proxy address as invalid
Change-Id: I4f79d4847943862dfd859325cdab075f62ef4707
2023-08-20 13:55:57 +00:00
Antonio Ojea
c112a34642 add unit test for kube-proxy service cache with ipMode
Change-Id: I0c25e15f259698a2882e398e05ab342bf2b38dba
2023-08-19 11:24:28 +00:00
Kubernetes Prow Robot
ee265c92fe
Merge pull request #119937 from RyanAoh/kep-1860-dev
Make Kubernetes aware of the LoadBalancer behaviour
2023-08-17 14:00:28 -07:00
git-jxj
a5b3a4b738
cleanup: Update deprecated FromInt to FromInt32 (#119858)
* redo commit

* apply suggestions from liggitt

* update Parse function based on suggestions
2023-08-16 09:33:01 -07:00
Aohan Yang
86b1f095ca Proxy changes for IP mode field 2023-08-14 17:21:26 +08:00
Mark Rossetti
0d90d1ffa5
Revert "Merge pull request #118895 from RyanAoh/kep-1860"
This reverts commit 890a6c8f70, reversing
changes made to 4f60a8d493.
2023-08-09 15:51:20 -07:00
Daman Arora
c4f4e3bc43 pkg/proxy: unit test refactoring
Signed-off-by: Daman Arora <aroradaman@gmail.com>
2023-08-02 18:47:42 +05:30
Daman Arora
4e10ff91c5 pkg/proxy: move proxier health eventing to cmd/kube-proxy
Signed-off-by: Daman Arora <aroradaman@gmail.com>
2023-07-24 20:09:46 +05:30
Kubernetes Prow Robot
ff90c1cc73
Merge pull request #119374 from danwinship/kep-3178-ga
move KEP-3178 IPTablesOwnershipCleanup to GA
2023-07-17 15:53:47 -07:00
Dan Winship
d486736dd3 Remove IPTablesOwnershipCleanup checks and dead code 2023-07-17 16:51:47 -04:00
Kubernetes Prow Robot
56f6030125
Merge pull request #119353 from aojea/proxy_metrics
aggregate kube-proxy metrics
2023-07-17 11:41:21 -07:00