...
1
16
17 package kubemark
18
19 import (
20 "fmt"
21 "time"
22
23 v1 "k8s.io/api/core/v1"
24 discoveryv1 "k8s.io/api/discovery/v1"
25 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
26 "k8s.io/apimachinery/pkg/types"
27 clientset "k8s.io/client-go/kubernetes"
28 v1core "k8s.io/client-go/kubernetes/typed/core/v1"
29 "k8s.io/client-go/tools/events"
30 proxyapp "k8s.io/kubernetes/cmd/kube-proxy/app"
31 proxyconfigapi "k8s.io/kubernetes/pkg/proxy/apis/config"
32 proxyconfig "k8s.io/kubernetes/pkg/proxy/config"
33 "k8s.io/utils/ptr"
34 )
35
36 type HollowProxy struct {
37 ProxyServer *proxyapp.ProxyServer
38 }
39
40 type FakeProxier struct {
41 proxyconfig.NoopNodeHandler
42 }
43
44 func (*FakeProxier) Sync() {}
45 func (*FakeProxier) SyncLoop() {
46 select {}
47 }
48 func (*FakeProxier) OnServiceAdd(service *v1.Service) {}
49 func (*FakeProxier) OnServiceUpdate(oldService, service *v1.Service) {}
50 func (*FakeProxier) OnServiceDelete(service *v1.Service) {}
51 func (*FakeProxier) OnServiceSynced() {}
52 func (*FakeProxier) OnEndpointSliceAdd(slice *discoveryv1.EndpointSlice) {}
53 func (*FakeProxier) OnEndpointSliceUpdate(oldSlice, slice *discoveryv1.EndpointSlice) {}
54 func (*FakeProxier) OnEndpointSliceDelete(slice *discoveryv1.EndpointSlice) {}
55 func (*FakeProxier) OnEndpointSlicesSynced() {}
56 func (*FakeProxier) OnServiceCIDRsChanged(_ []string) {}
57
58 func NewHollowProxy(
59 nodeName string,
60 client clientset.Interface,
61 eventClient v1core.EventsGetter,
62 broadcaster events.EventBroadcaster,
63 recorder events.EventRecorder,
64 ) *HollowProxy {
65 return &HollowProxy{
66 ProxyServer: &proxyapp.ProxyServer{
67 Config: &proxyconfigapi.KubeProxyConfiguration{
68 Mode: proxyconfigapi.ProxyMode("fake"),
69 ConfigSyncPeriod: metav1.Duration{Duration: 30 * time.Second},
70 OOMScoreAdj: ptr.To[int32](0),
71 },
72
73 Client: client,
74 Proxier: &FakeProxier{},
75 Broadcaster: broadcaster,
76 Recorder: recorder,
77 NodeRef: &v1.ObjectReference{
78 Kind: "Node",
79 Name: nodeName,
80 UID: types.UID(nodeName),
81 Namespace: "",
82 },
83 },
84 }
85 }
86
87 func (hp *HollowProxy) Run() error {
88 if err := hp.ProxyServer.Run(); err != nil {
89 return fmt.Errorf("Error while running proxy: %w", err)
90 }
91 return nil
92 }
93
View as plain text