diff --git a/cmd/kube-proxy/app/server_linux.go b/cmd/kube-proxy/app/server_linux.go index 1a29927d82e..e9074b55c25 100644 --- a/cmd/kube-proxy/app/server_linux.go +++ b/cmd/kube-proxy/app/server_linux.go @@ -32,6 +32,7 @@ import ( "k8s.io/klog/v2" "k8s.io/kubernetes/pkg/proxy" proxyconfigapi "k8s.io/kubernetes/pkg/proxy/apis/config" + "k8s.io/kubernetes/pkg/proxy/conntrack" "k8s.io/kubernetes/pkg/proxy/iptables" "k8s.io/kubernetes/pkg/proxy/ipvs" utilipset "k8s.io/kubernetes/pkg/proxy/ipvs/ipset" @@ -64,10 +65,8 @@ func (o *Options) platformApplyDefaults(config *proxyconfigapi.KubeProxyConfigur // Proxier. It should fill in any platform-specific fields and perform other // platform-specific setup. func (s *ProxyServer) platformSetup(ctx context.Context) error { - ct := &realConntrackConfigurer{} - err := setupConntrack(ctx, ct, &s.Config.Linux.Conntrack) - if err != nil { - return err + if err := conntrack.SetSysctls(ctx, &s.Config.Linux.Conntrack); err != nil { + return fmt.Errorf("could not set conntrack parameters from kube-proxy configuration: %w", err) } return nil diff --git a/cmd/kube-proxy/app/conntrack.go b/pkg/proxy/conntrack/sysctls.go similarity index 95% rename from cmd/kube-proxy/app/conntrack.go rename to pkg/proxy/conntrack/sysctls.go index 347c5d43cd9..f2a21bb310f 100644 --- a/cmd/kube-proxy/app/conntrack.go +++ b/pkg/proxy/conntrack/sysctls.go @@ -17,7 +17,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package app +package conntrack import ( "context" @@ -35,6 +35,10 @@ import ( proxyconfigapi "k8s.io/kubernetes/pkg/proxy/apis/config" ) +func SetSysctls(ctx context.Context, config *proxyconfigapi.KubeProxyConntrackConfiguration) error { + return setSysctls(ctx, realConntrackConfigurer{}, config) +} + // conntrackConfigurer is a mockable interface for setting conntrack sysctls. // // Descriptions of the various sysctl fields can be found here: @@ -54,7 +58,7 @@ type conntrackConfigurer interface { SetUDPStreamTimeout(ctx context.Context, seconds int) error } -func setupConntrack(ctx context.Context, ct conntrackConfigurer, config *proxyconfigapi.KubeProxyConntrackConfiguration) error { +func setSysctls(ctx context.Context, ct conntrackConfigurer, config *proxyconfigapi.KubeProxyConntrackConfiguration) error { max, err := getConntrackMax(ctx, config) if err != nil { return err diff --git a/cmd/kube-proxy/app/conntrack_test.go b/pkg/proxy/conntrack/sysctls_test.go similarity index 99% rename from cmd/kube-proxy/app/conntrack_test.go rename to pkg/proxy/conntrack/sysctls_test.go index caa07e12bf5..a82038e7490 100644 --- a/cmd/kube-proxy/app/conntrack_test.go +++ b/pkg/proxy/conntrack/sysctls_test.go @@ -17,7 +17,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package app +package conntrack import ( "context" @@ -226,7 +226,7 @@ func TestSetupConntrack(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { fc := &fakeConntracker{err: test.conntrackErr} - err := setupConntrack(ctx, fc, &test.config) + err := setSysctls(ctx, fc, &test.config) if test.wantErr && err == nil { t.Errorf("Test %q: Expected error, got nil", test.name) }