mirror of
https://github.com/k3s-io/k3s.git
synced 2024-06-07 19:41:36 +00:00
Merge pull request #250 from yoink00/master
Allow flannel interface to be specified on the command line
This commit is contained in:
commit
08c3d0d4ef
@ -206,11 +206,20 @@ func get(envInfo *cmds.Agent) (*config.Node, error) {
|
||||
return nil, errors.Wrapf(err, "failed to find host-local")
|
||||
}
|
||||
|
||||
var flannelIface *sysnet.Interface
|
||||
if !envInfo.NoFlannel && len(envInfo.FlannelIface) > 0 {
|
||||
flannelIface, err = sysnet.InterfaceByName(envInfo.FlannelIface)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "unable to find interface")
|
||||
}
|
||||
}
|
||||
|
||||
nodeConfig := &config.Node{
|
||||
Docker: envInfo.Docker,
|
||||
NoFlannel: envInfo.NoFlannel,
|
||||
ContainerRuntimeEndpoint: envInfo.ContainerRuntimeEndpoint,
|
||||
}
|
||||
nodeConfig.FlannelIface = flannelIface
|
||||
nodeConfig.LocalAddress = localAddress(controlConfig)
|
||||
nodeConfig.Images = filepath.Join(envInfo.DataDir, "images")
|
||||
nodeConfig.AgentConfig.NodeIP = nodeIP
|
||||
|
@ -36,8 +36,8 @@ const (
|
||||
subnetFile = "/run/flannel/subnet.env"
|
||||
)
|
||||
|
||||
func flannel(ctx context.Context, flannelConf, kubeConfigFile string) error {
|
||||
extIface, err := LookupExtIface()
|
||||
func flannel(ctx context.Context, flannelIface *net.Interface, flannelConf, kubeConfigFile string) error {
|
||||
extIface, err := LookupExtIface(flannelIface)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -81,14 +81,17 @@ func flannel(ctx context.Context, flannelConf, kubeConfigFile string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func LookupExtIface() (*backend.ExternalInterface, error) {
|
||||
var iface *net.Interface
|
||||
func LookupExtIface(iface *net.Interface) (*backend.ExternalInterface, error) {
|
||||
var ifaceAddr net.IP
|
||||
var err error
|
||||
|
||||
log.Info("Determining IP address of default interface")
|
||||
if iface, err = ip.GetDefaultGatewayIface(); err != nil {
|
||||
return nil, fmt.Errorf("failed to get default interface: %s", err)
|
||||
if iface == nil {
|
||||
log.Info("Determining IP address of default interface")
|
||||
if iface, err = ip.GetDefaultGatewayIface(); err != nil {
|
||||
return nil, fmt.Errorf("failed to get default interface: %s", err)
|
||||
}
|
||||
} else {
|
||||
log.Info("Determining IP address of specified interface: ", iface.Name)
|
||||
}
|
||||
|
||||
ifaceAddr, err = ip.GetIfaceIP4Addr(iface)
|
||||
|
@ -79,7 +79,7 @@ func Run(ctx context.Context, config *config.Node) error {
|
||||
}
|
||||
|
||||
go func() {
|
||||
err := flannel(ctx, config.FlannelConf, config.AgentConfig.KubeConfig)
|
||||
err := flannel(ctx, config.FlannelIface, config.FlannelConf, config.AgentConfig.KubeConfig)
|
||||
logrus.Fatalf("flannel exited: %v", err)
|
||||
}()
|
||||
|
||||
|
@ -19,6 +19,7 @@ type Agent struct {
|
||||
Docker bool
|
||||
ContainerRuntimeEndpoint string
|
||||
NoFlannel bool
|
||||
FlannelIface string
|
||||
Debug bool
|
||||
Rootless bool
|
||||
AgentShared
|
||||
@ -54,6 +55,11 @@ var (
|
||||
Usage: "(agent) Disable embedded flannel",
|
||||
Destination: &AgentConfig.NoFlannel,
|
||||
}
|
||||
FlannelIfaceFlag = cli.StringFlag{
|
||||
Name: "flannel-iface",
|
||||
Usage: "(agent) Override default flannel interface",
|
||||
Destination: &AgentConfig.FlannelIface,
|
||||
}
|
||||
CRIEndpointFlag = cli.StringFlag{
|
||||
Name: "container-runtime-endpoint",
|
||||
Usage: "(agent) Disable embedded containerd and use alternative CRI implementation",
|
||||
@ -121,6 +127,7 @@ func NewAgentCommand(action func(ctx *cli.Context) error) cli.Command {
|
||||
},
|
||||
DockerFlag,
|
||||
FlannelFlag,
|
||||
FlannelIfaceFlag,
|
||||
NodeNameFlag,
|
||||
NodeIPFlag,
|
||||
CRIEndpointFlag,
|
||||
|
@ -134,6 +134,7 @@ func NewServerCommand(action func(*cli.Context) error) cli.Command {
|
||||
NodeNameFlag,
|
||||
DockerFlag,
|
||||
FlannelFlag,
|
||||
FlannelIfaceFlag,
|
||||
CRIEndpointFlag,
|
||||
ResolvConfFlag,
|
||||
ExtraKubeletArgs,
|
||||
|
@ -15,6 +15,7 @@ type Node struct {
|
||||
ContainerRuntimeEndpoint string
|
||||
NoFlannel bool
|
||||
FlannelConf string
|
||||
FlannelIface *net.Interface
|
||||
LocalAddress string
|
||||
Containerd Containerd
|
||||
Images string
|
||||
|
Loading…
Reference in New Issue
Block a user