From 9754386c7649e0393cd5f892a956397d4389b445 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Sun, 12 Mar 2023 15:01:46 -0400 Subject: [PATCH 1/3] Remove write-only ProxyServer fields --- cmd/kube-proxy/app/server.go | 8 -------- cmd/kube-proxy/app/server_others.go | 4 ---- pkg/proxy/kubemark/hollow_proxy.go | 1 - 3 files changed, 13 deletions(-) diff --git a/cmd/kube-proxy/app/server.go b/cmd/kube-proxy/app/server.go index 0f13dc72dc3..c5222ae98c4 100644 --- a/cmd/kube-proxy/app/server.go +++ b/cmd/kube-proxy/app/server.go @@ -79,11 +79,7 @@ import ( proxyutil "k8s.io/kubernetes/pkg/proxy/util" "k8s.io/kubernetes/pkg/util/filesystem" utilflag "k8s.io/kubernetes/pkg/util/flag" - utilipset "k8s.io/kubernetes/pkg/util/ipset" - utiliptables "k8s.io/kubernetes/pkg/util/iptables" - utilipvs "k8s.io/kubernetes/pkg/util/ipvs" "k8s.io/kubernetes/pkg/util/oom" - "k8s.io/utils/exec" netutils "k8s.io/utils/net" "k8s.io/utils/pointer" ) @@ -529,10 +525,6 @@ with the apiserver API to configure the proxy.`, type ProxyServer struct { Client clientset.Interface EventClient v1core.EventsGetter - IptInterface utiliptables.Interface - IpvsInterface utilipvs.Interface - IpsetInterface utilipset.Interface - execer exec.Interface Proxier proxy.Provider Broadcaster events.EventBroadcaster Recorder events.EventRecorder diff --git a/cmd/kube-proxy/app/server_others.go b/cmd/kube-proxy/app/server_others.go index 56ad20f9567..485647b6b2d 100644 --- a/cmd/kube-proxy/app/server_others.go +++ b/cmd/kube-proxy/app/server_others.go @@ -339,10 +339,6 @@ func newProxyServer( return &ProxyServer{ Client: client, EventClient: eventClient, - IptInterface: iptInterface, - IpvsInterface: ipvsInterface, - IpsetInterface: ipsetInterface, - execer: execer, Proxier: proxier, Broadcaster: eventBroadcaster, Recorder: recorder, diff --git a/pkg/proxy/kubemark/hollow_proxy.go b/pkg/proxy/kubemark/hollow_proxy.go index e7ba215e57f..e750e4a47b3 100644 --- a/pkg/proxy/kubemark/hollow_proxy.go +++ b/pkg/proxy/kubemark/hollow_proxy.go @@ -126,7 +126,6 @@ func NewHollowProxyOrDie( ProxyServer: &proxyapp.ProxyServer{ Client: client, EventClient: eventClient, - IptInterface: iptInterface, Proxier: proxier, Broadcaster: broadcaster, Recorder: recorder, From 8a790ac2e1bac31209fc46d2bef56b93bc4db321 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Mon, 13 Mar 2023 10:20:23 -0400 Subject: [PATCH 2/3] Remove unused ProxyServer.EventClient field The port to Events v1 left some cruft behind. --- cmd/kube-proxy/app/server.go | 19 ++++++------------- cmd/kube-proxy/app/server_others.go | 3 +-- cmd/kube-proxy/app/server_windows.go | 3 +-- pkg/proxy/kubemark/hollow_proxy.go | 1 - 4 files changed, 8 insertions(+), 18 deletions(-) diff --git a/cmd/kube-proxy/app/server.go b/cmd/kube-proxy/app/server.go index c5222ae98c4..3503f585fe0 100644 --- a/cmd/kube-proxy/app/server.go +++ b/cmd/kube-proxy/app/server.go @@ -48,7 +48,6 @@ import ( utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/client-go/informers" clientset "k8s.io/client-go/kubernetes" - v1core "k8s.io/client-go/kubernetes/typed/core/v1" "k8s.io/client-go/rest" "k8s.io/client-go/tools/clientcmd" clientcmdapi "k8s.io/client-go/tools/clientcmd/api" @@ -524,7 +523,6 @@ with the apiserver API to configure the proxy.`, // fields are required. type ProxyServer struct { Client clientset.Interface - EventClient v1core.EventsGetter Proxier proxy.Provider Broadcaster events.EventBroadcaster Recorder events.EventRecorder @@ -541,9 +539,9 @@ type ProxyServer struct { localDetectorMode kubeproxyconfig.LocalMode } -// createClients creates a kube client and an event client from the given config and masterOverride. +// createClient creates a kube client from the given config and masterOverride. // TODO remove masterOverride when CLI flags are removed. -func createClients(config componentbaseconfig.ClientConnectionConfiguration, masterOverride string) (clientset.Interface, v1core.EventsGetter, error) { +func createClient(config componentbaseconfig.ClientConnectionConfiguration, masterOverride string) (clientset.Interface, error) { var kubeConfig *rest.Config var err error @@ -558,7 +556,7 @@ func createClients(config componentbaseconfig.ClientConnectionConfiguration, mas &clientcmd.ConfigOverrides{ClusterInfo: clientcmdapi.Cluster{Server: masterOverride}}).ClientConfig() } if err != nil { - return nil, nil, err + return nil, err } kubeConfig.AcceptContentTypes = config.AcceptContentTypes @@ -568,15 +566,10 @@ func createClients(config componentbaseconfig.ClientConnectionConfiguration, mas client, err := clientset.NewForConfig(kubeConfig) if err != nil { - return nil, nil, err + return nil, err } - eventClient, err := clientset.NewForConfig(kubeConfig) - if err != nil { - return nil, nil, err - } - - return client, eventClient.CoreV1(), nil + return client, nil } func serveHealthz(hz healthcheck.ProxierHealthUpdater, errCh chan error) { @@ -659,7 +652,7 @@ func (s *ProxyServer) Run() error { } } - if s.Broadcaster != nil && s.EventClient != nil { + if s.Broadcaster != nil { stopCh := make(chan struct{}) s.Broadcaster.StartRecordingToSink(stopCh) } diff --git a/cmd/kube-proxy/app/server_others.go b/cmd/kube-proxy/app/server_others.go index 485647b6b2d..c4121feb989 100644 --- a/cmd/kube-proxy/app/server_others.go +++ b/cmd/kube-proxy/app/server_others.go @@ -101,7 +101,7 @@ func newProxyServer( return nil, err } - client, eventClient, err := createClients(config.ClientConnection, master) + client, err := createClient(config.ClientConnection, master) if err != nil { return nil, err } @@ -338,7 +338,6 @@ func newProxyServer( return &ProxyServer{ Client: client, - EventClient: eventClient, Proxier: proxier, Broadcaster: eventBroadcaster, Recorder: recorder, diff --git a/cmd/kube-proxy/app/server_windows.go b/cmd/kube-proxy/app/server_windows.go index 6336fa72cc0..481f0d8c58b 100644 --- a/cmd/kube-proxy/app/server_windows.go +++ b/cmd/kube-proxy/app/server_windows.go @@ -65,7 +65,7 @@ func newProxyServer(config *proxyconfigapi.KubeProxyConfiguration, master string metrics.SetShowHidden() } - client, eventClient, err := createClients(config.ClientConnection, master) + client, err := createClient(config.ClientConnection, master) if err != nil { return nil, err } @@ -143,7 +143,6 @@ func newProxyServer(config *proxyconfigapi.KubeProxyConfiguration, master string return &ProxyServer{ Client: client, - EventClient: eventClient, Proxier: proxier, Broadcaster: eventBroadcaster, Recorder: recorder, diff --git a/pkg/proxy/kubemark/hollow_proxy.go b/pkg/proxy/kubemark/hollow_proxy.go index e750e4a47b3..e87d165b84b 100644 --- a/pkg/proxy/kubemark/hollow_proxy.go +++ b/pkg/proxy/kubemark/hollow_proxy.go @@ -125,7 +125,6 @@ func NewHollowProxyOrDie( return &HollowProxy{ ProxyServer: &proxyapp.ProxyServer{ Client: client, - EventClient: eventClient, Proxier: proxier, Broadcaster: broadcaster, Recorder: recorder, From be101a748ddbff5d34845550fafb1530f9800bf7 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Tue, 14 Mar 2023 15:18:22 -0400 Subject: [PATCH 3/3] Remove some unused winkernel arguments/fields/functions The winkernel proxy was originally created by copying+pasting from the iptables code, but some iptables-specific things were never removed (and one function got left behind after its functionality was moved into the shared proxy code). --- cmd/kube-proxy/app/server_windows.go | 4 --- pkg/proxy/winkernel/proxier.go | 44 ++++------------------------ 2 files changed, 6 insertions(+), 42 deletions(-) diff --git a/cmd/kube-proxy/app/server_windows.go b/cmd/kube-proxy/app/server_windows.go index 481f0d8c58b..a6ba3eff5ce 100644 --- a/cmd/kube-proxy/app/server_windows.go +++ b/cmd/kube-proxy/app/server_windows.go @@ -111,8 +111,6 @@ func newProxyServer(config *proxyconfigapi.KubeProxyConfiguration, master string proxier, err = winkernel.NewDualStackProxier( config.IPTables.SyncPeriod.Duration, config.IPTables.MinSyncPeriod.Duration, - config.IPTables.MasqueradeAll, - int(*config.IPTables.MasqueradeBit), config.ClusterCIDR, hostname, nodeIPTuple(config.BindAddress), @@ -125,8 +123,6 @@ func newProxyServer(config *proxyconfigapi.KubeProxyConfiguration, master string proxier, err = winkernel.NewProxier( config.IPTables.SyncPeriod.Duration, config.IPTables.MinSyncPeriod.Duration, - config.IPTables.MasqueradeAll, - int(*config.IPTables.MasqueradeBit), config.ClusterCIDR, hostname, nodeIP, diff --git a/pkg/proxy/winkernel/proxier.go b/pkg/proxy/winkernel/proxier.go index 3c14451dbdb..e281796f223 100644 --- a/pkg/proxy/winkernel/proxier.go +++ b/pkg/proxy/winkernel/proxier.go @@ -33,7 +33,6 @@ import ( "github.com/Microsoft/hcsshim/hcn" v1 "k8s.io/api/core/v1" discovery "k8s.io/api/discovery/v1" - "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/intstr" apiutil "k8s.io/apimachinery/pkg/util/net" "k8s.io/apimachinery/pkg/util/sets" @@ -41,7 +40,6 @@ import ( utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/client-go/tools/events" "k8s.io/klog/v2" - "k8s.io/kubernetes/pkg/apis/core/v1/helper" kubefeatures "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/proxy" "k8s.io/kubernetes/pkg/proxy/apis/config" @@ -614,21 +612,14 @@ type Proxier struct { initialized int32 syncRunner *async.BoundedFrequencyRunner // governs calls to syncProxyRules // These are effectively const and do not need the mutex to be held. - masqueradeAll bool - masqueradeMark string - clusterCIDR string - hostname string - nodeIP net.IP - recorder events.EventRecorder + clusterCIDR string + hostname string + nodeIP net.IP + recorder events.EventRecorder serviceHealthServer healthcheck.ServiceHealthServer healthzServer healthcheck.ProxierHealthUpdater - // Since converting probabilities (floats) to strings is expensive - // and we are using only probabilities in the format of 1/n, we are - // precomputing some number of those and cache for future reuse. - precomputedProbabilities []string - hns HostNetworkService network hnsNetworkInfo sourceVip string @@ -677,8 +668,6 @@ var _ proxy.Provider = &Proxier{} func NewProxier( syncPeriod time.Duration, minSyncPeriod time.Duration, - masqueradeAll bool, - masqueradeBit int, clusterCIDR string, hostname string, nodeIP net.IP, @@ -687,9 +676,6 @@ func NewProxier( config config.KubeProxyWinkernelConfiguration, healthzPort int, ) (*Proxier, error) { - masqueradeValue := 1 << uint(masqueradeBit) - masqueradeMark := fmt.Sprintf("%#08x/%#08x", masqueradeValue, masqueradeValue) - if nodeIP == nil { klog.InfoS("Invalid nodeIP, initializing kube-proxy with 127.0.0.1 as nodeIP") nodeIP = netutils.ParseIPSloppy("127.0.0.1") @@ -783,8 +769,6 @@ func NewProxier( endPointsRefCount: make(endPointsReferenceCountMap), svcPortMap: make(proxy.ServicePortMap), endpointsMap: make(proxy.EndpointsMap), - masqueradeAll: masqueradeAll, - masqueradeMark: masqueradeMark, clusterCIDR: clusterCIDR, hostname: hostname, nodeIP: nodeIP, @@ -822,8 +806,6 @@ func NewProxier( func NewDualStackProxier( syncPeriod time.Duration, minSyncPeriod time.Duration, - masqueradeAll bool, - masqueradeBit int, clusterCIDR string, hostname string, nodeIP [2]net.IP, @@ -834,14 +816,14 @@ func NewDualStackProxier( ) (proxy.Provider, error) { // Create an ipv4 instance of the single-stack proxier - ipv4Proxier, err := NewProxier(syncPeriod, minSyncPeriod, masqueradeAll, masqueradeBit, + ipv4Proxier, err := NewProxier(syncPeriod, minSyncPeriod, clusterCIDR, hostname, nodeIP[0], recorder, healthzServer, config, healthzPort) if err != nil { return nil, fmt.Errorf("unable to create ipv4 proxier: %v, hostname: %s, clusterCIDR : %s, nodeIP:%v", err, hostname, clusterCIDR, nodeIP[0]) } - ipv6Proxier, err := NewProxier(syncPeriod, minSyncPeriod, masqueradeAll, masqueradeBit, + ipv6Proxier, err := NewProxier(syncPeriod, minSyncPeriod, clusterCIDR, hostname, nodeIP[1], recorder, healthzServer, config, healthzPort) if err != nil { return nil, fmt.Errorf("unable to create ipv6 proxier: %v, hostname: %s, clusterCIDR : %s, nodeIP:%v", err, hostname, clusterCIDR, nodeIP[1]) @@ -1034,20 +1016,6 @@ func (proxier *Proxier) OnServiceSynced() { proxier.syncProxyRules() } -func shouldSkipService(svcName types.NamespacedName, service *v1.Service) bool { - // if ClusterIP is "None" or empty, skip proxying - if !helper.IsServiceIPSet(service) { - klog.V(3).InfoS("Skipping service due to clusterIP", "serviceName", svcName, "clusterIP", service.Spec.ClusterIP) - return true - } - // Even if ClusterIP is set, ServiceTypeExternalName services don't get proxied - if service.Spec.Type == v1.ServiceTypeExternalName { - klog.V(3).InfoS("Skipping service due to Type=ExternalName", "serviceName", svcName) - return true - } - return false -} - // OnEndpointSliceAdd is called whenever creation of a new endpoint slice object // is observed. func (proxier *Proxier) OnEndpointSliceAdd(endpointSlice *discovery.EndpointSlice) {