mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-10 20:42:26 +00:00
Merge pull request #121814 from danwinship/kubemark-iptables
Remove --use-real-proxier support from kubemark
This commit is contained in:
commit
60cde601a8
@ -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()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
1
vendor/modules.txt
vendored
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user