Merge pull request #121814 from danwinship/kubemark-iptables

Remove --use-real-proxier support from kubemark
This commit is contained in:
Kubernetes Prow Robot 2023-12-13 23:55:01 +01:00 committed by GitHub
commit 60cde601a8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 95 deletions

View File

@ -18,7 +18,6 @@ package app
import ( import (
"context" "context"
"errors"
goflag "flag" goflag "flag"
"fmt" "fmt"
"time" "time"
@ -42,7 +41,6 @@ import (
_ "k8s.io/component-base/metrics/prometheus/version" // for version metric registration _ "k8s.io/component-base/metrics/prometheus/version" // for version metric registration
"k8s.io/component-base/version" "k8s.io/component-base/version"
"k8s.io/component-base/version/verflag" "k8s.io/component-base/version/verflag"
fakesysctl "k8s.io/component-helpers/node/util/sysctl/testing"
"k8s.io/kubernetes/pkg/api/legacyscheme" "k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/cluster/ports" "k8s.io/kubernetes/pkg/cluster/ports"
cadvisortest "k8s.io/kubernetes/pkg/kubelet/cadvisor/testing" cadvisortest "k8s.io/kubernetes/pkg/kubelet/cadvisor/testing"
@ -53,8 +51,6 @@ import (
"k8s.io/kubernetes/pkg/kubemark" "k8s.io/kubernetes/pkg/kubemark"
kubemarkproxy "k8s.io/kubernetes/pkg/proxy/kubemark" kubemarkproxy "k8s.io/kubernetes/pkg/proxy/kubemark"
utilflag "k8s.io/kubernetes/pkg/util/flag" utilflag "k8s.io/kubernetes/pkg/util/flag"
fakeiptables "k8s.io/kubernetes/pkg/util/iptables/testing"
fakeexec "k8s.io/utils/exec/testing"
) )
type hollowNodeConfig struct { type hollowNodeConfig struct {
@ -67,14 +63,16 @@ type hollowNodeConfig struct {
NodeName string NodeName string
ServerPort int ServerPort int
ContentType string ContentType string
UseRealProxier bool
ProxierSyncPeriod time.Duration
ProxierMinSyncPeriod time.Duration
NodeLabels map[string]string NodeLabels map[string]string
RegisterWithTaints []v1.Taint RegisterWithTaints []v1.Taint
MaxPods int MaxPods int
ExtendedResources map[string]string ExtendedResources map[string]string
UseHostImageService bool UseHostImageService bool
// Deprecated config; remove these with the corresponding flags
UseRealProxier bool
ProxierSyncPeriod time.Duration
ProxierMinSyncPeriod time.Duration
} }
const ( const (
@ -96,9 +94,6 @@ func (c *hollowNodeConfig) addFlags(fs *pflag.FlagSet) {
fs.IntVar(&c.ServerPort, "api-server-port", 443, "Port on which API server is listening.") fs.IntVar(&c.ServerPort, "api-server-port", 443, "Port on which API server is listening.")
fs.StringVar(&c.Morph, "morph", "", fmt.Sprintf("Specifies into which Hollow component this binary should morph. Allowed values: %v", knownMorphs.List())) fs.StringVar(&c.Morph, "morph", "", fmt.Sprintf("Specifies into which Hollow component this binary should morph. Allowed values: %v", knownMorphs.List()))
fs.StringVar(&c.ContentType, "kube-api-content-type", "application/vnd.kubernetes.protobuf", "ContentType of requests sent to apiserver.") fs.StringVar(&c.ContentType, "kube-api-content-type", "application/vnd.kubernetes.protobuf", "ContentType of requests sent to apiserver.")
fs.BoolVar(&c.UseRealProxier, "use-real-proxier", true, "Set to true if you want to use real proxier inside hollow-proxy.")
fs.DurationVar(&c.ProxierSyncPeriod, "proxier-sync-period", 30*time.Second, "Period that proxy rules are refreshed in hollow-proxy.")
fs.DurationVar(&c.ProxierMinSyncPeriod, "proxier-min-sync-period", 0, "Minimum period that proxy rules are refreshed in hollow-proxy.")
bindableNodeLabels := cliflag.ConfigurationMap(c.NodeLabels) bindableNodeLabels := cliflag.ConfigurationMap(c.NodeLabels)
fs.Var(&bindableNodeLabels, "node-labels", "Additional node labels") fs.Var(&bindableNodeLabels, "node-labels", "Additional node labels")
fs.Var(utilflag.RegisterWithTaintsVar{Value: &c.RegisterWithTaints}, "register-with-taints", "Register the node with the given list of taints (comma separated \"<key>=<value>:<effect>\"). No-op if register-node is false.") fs.Var(utilflag.RegisterWithTaintsVar{Value: &c.RegisterWithTaints}, "register-with-taints", "Register the node with the given list of taints (comma separated \"<key>=<value>:<effect>\"). No-op if register-node is false.")
@ -106,6 +101,13 @@ func (c *hollowNodeConfig) addFlags(fs *pflag.FlagSet) {
bindableExtendedResources := cliflag.ConfigurationMap(c.ExtendedResources) bindableExtendedResources := cliflag.ConfigurationMap(c.ExtendedResources)
fs.Var(&bindableExtendedResources, "extended-resources", "Register the node with extended resources (comma separated \"<name>=<quantity>\")") fs.Var(&bindableExtendedResources, "extended-resources", "Register the node with extended resources (comma separated \"<name>=<quantity>\")")
fs.BoolVar(&c.UseHostImageService, "use-host-image-service", true, "Set to true if the hollow-kubelet should use the host image service. If set to false the fake image service will be used") fs.BoolVar(&c.UseHostImageService, "use-host-image-service", true, "Set to true if the hollow-kubelet should use the host image service. If set to false the fake image service will be used")
fs.BoolVar(&c.UseRealProxier, "use-real-proxier", true, "Has no effect.")
_ = fs.MarkDeprecated("use-real-proxier", "This flag is deprecated and will be removed in a future release.")
fs.DurationVar(&c.ProxierSyncPeriod, "proxier-sync-period", 30*time.Second, "Has no effect.")
_ = fs.MarkDeprecated("proxier-sync-period", "This flag is deprecated and will be removed in a future release.")
fs.DurationVar(&c.ProxierMinSyncPeriod, "proxier-min-sync-period", 0, "Has no effect.")
_ = fs.MarkDeprecated("proxier-min-sync-period", "This flag is deprecated and will be removed in a future release.")
} }
func (c *hollowNodeConfig) createClientConfigFromFile() (*restclient.Config, error) { func (c *hollowNodeConfig) createClientConfigFromFile() (*restclient.Config, error) {
@ -272,30 +274,16 @@ func run(config *hollowNodeConfig) error {
if err != nil { if err != nil {
return fmt.Errorf("Failed to create API Server client, error: %w", err) return fmt.Errorf("Failed to create API Server client, error: %w", err)
} }
iptInterface := fakeiptables.NewFake()
sysctl := fakesysctl.NewFake()
execer := &fakeexec.FakeExec{
LookPathFunc: func(_ string) (string, error) { return "", errors.New("fake execer") },
}
eventBroadcaster := events.NewBroadcaster(&events.EventSinkImpl{Interface: client.EventsV1()}) eventBroadcaster := events.NewBroadcaster(&events.EventSinkImpl{Interface: client.EventsV1()})
recorder := eventBroadcaster.NewRecorder(legacyscheme.Scheme, "kube-proxy") recorder := eventBroadcaster.NewRecorder(legacyscheme.Scheme, "kube-proxy")
hollowProxy, err := kubemarkproxy.NewHollowProxyOrDie( hollowProxy := kubemarkproxy.NewHollowProxy(
config.NodeName, config.NodeName,
client, client,
client.CoreV1(), client.CoreV1(),
iptInterface,
sysctl,
execer,
eventBroadcaster, eventBroadcaster,
recorder, recorder,
config.UseRealProxier,
config.ProxierSyncPeriod,
config.ProxierMinSyncPeriod,
) )
if err != nil {
return fmt.Errorf("Failed to create hollowProxy instance, error: %w", err)
}
return hollowProxy.Run() return hollowProxy.Run()
} }

View File

@ -27,20 +27,10 @@ import (
clientset "k8s.io/client-go/kubernetes" clientset "k8s.io/client-go/kubernetes"
v1core "k8s.io/client-go/kubernetes/typed/core/v1" v1core "k8s.io/client-go/kubernetes/typed/core/v1"
"k8s.io/client-go/tools/events" "k8s.io/client-go/tools/events"
utilsysctl "k8s.io/component-helpers/node/util/sysctl"
proxyapp "k8s.io/kubernetes/cmd/kube-proxy/app" proxyapp "k8s.io/kubernetes/cmd/kube-proxy/app"
"k8s.io/kubernetes/pkg/proxy"
proxyconfigapi "k8s.io/kubernetes/pkg/proxy/apis/config" proxyconfigapi "k8s.io/kubernetes/pkg/proxy/apis/config"
proxyconfig "k8s.io/kubernetes/pkg/proxy/config" proxyconfig "k8s.io/kubernetes/pkg/proxy/config"
"k8s.io/kubernetes/pkg/proxy/iptables"
proxyutiliptables "k8s.io/kubernetes/pkg/proxy/util/iptables"
utiliptables "k8s.io/kubernetes/pkg/util/iptables"
utilnode "k8s.io/kubernetes/pkg/util/node"
utilexec "k8s.io/utils/exec"
netutils "k8s.io/utils/net"
"k8s.io/utils/ptr" "k8s.io/utils/ptr"
"k8s.io/klog/v2"
) )
type HollowProxy struct { type HollowProxy struct {
@ -64,67 +54,13 @@ func (*FakeProxier) OnEndpointSliceUpdate(oldSlice, slice *discoveryv1.EndpointS
func (*FakeProxier) OnEndpointSliceDelete(slice *discoveryv1.EndpointSlice) {} func (*FakeProxier) OnEndpointSliceDelete(slice *discoveryv1.EndpointSlice) {}
func (*FakeProxier) OnEndpointSlicesSynced() {} func (*FakeProxier) OnEndpointSlicesSynced() {}
func NewHollowProxyOrDie( func NewHollowProxy(
nodeName string, nodeName string,
client clientset.Interface, client clientset.Interface,
eventClient v1core.EventsGetter, eventClient v1core.EventsGetter,
iptInterface utiliptables.Interface,
sysctl utilsysctl.Interface,
execer utilexec.Interface,
broadcaster events.EventBroadcaster, broadcaster events.EventBroadcaster,
recorder events.EventRecorder, recorder events.EventRecorder,
useRealProxier bool, ) *HollowProxy {
proxierSyncPeriod time.Duration,
proxierMinSyncPeriod time.Duration,
) (*HollowProxy, error) {
// Create proxier and service/endpoint handlers.
var proxier proxy.Provider
var err error
if useRealProxier {
nodeIP := utilnode.GetNodeIP(client, nodeName)
if nodeIP == nil {
klog.InfoS("Can't determine this node's IP, assuming 127.0.0.1")
nodeIP = netutils.ParseIPSloppy("127.0.0.1")
}
family := v1.IPv4Protocol
if iptInterface.IsIPv6() {
family = v1.IPv6Protocol
}
// Real proxier with fake iptables, sysctl, etc underneath it.
//var err error
proxier, err = iptables.NewProxier(
family,
iptInterface,
sysctl,
execer,
proxierSyncPeriod,
proxierMinSyncPeriod,
false,
false,
0,
proxyutiliptables.NewNoOpLocalDetector(),
nodeName,
nodeIP,
recorder,
nil,
[]string{},
false,
)
if err != nil {
return nil, fmt.Errorf("unable to create proxier: %v", err)
}
} else {
proxier = &FakeProxier{}
}
// Create a Hollow Proxy instance.
nodeRef := &v1.ObjectReference{
Kind: "Node",
Name: nodeName,
UID: types.UID(nodeName),
Namespace: "",
}
return &HollowProxy{ return &HollowProxy{
ProxyServer: &proxyapp.ProxyServer{ ProxyServer: &proxyapp.ProxyServer{
Config: &proxyconfigapi.KubeProxyConfiguration{ Config: &proxyconfigapi.KubeProxyConfiguration{
@ -134,12 +70,17 @@ func NewHollowProxyOrDie(
}, },
Client: client, Client: client,
Proxier: proxier, Proxier: &FakeProxier{},
Broadcaster: broadcaster, Broadcaster: broadcaster,
Recorder: recorder, Recorder: recorder,
NodeRef: nodeRef, NodeRef: &v1.ObjectReference{
Kind: "Node",
Name: nodeName,
UID: types.UID(nodeName),
Namespace: "",
},
}, },
}, nil }
} }
func (hp *HollowProxy) Run() error { func (hp *HollowProxy) Run() error {

1
vendor/modules.txt vendored
View File

@ -2067,7 +2067,6 @@ k8s.io/component-helpers/auth/rbac/validation
k8s.io/component-helpers/node/topology k8s.io/component-helpers/node/topology
k8s.io/component-helpers/node/util k8s.io/component-helpers/node/util
k8s.io/component-helpers/node/util/sysctl k8s.io/component-helpers/node/util/sysctl
k8s.io/component-helpers/node/util/sysctl/testing
k8s.io/component-helpers/scheduling/corev1 k8s.io/component-helpers/scheduling/corev1
k8s.io/component-helpers/scheduling/corev1/nodeaffinity k8s.io/component-helpers/scheduling/corev1/nodeaffinity
k8s.io/component-helpers/storage/ephemeral k8s.io/component-helpers/storage/ephemeral