Merge pull request #250 from yoink00/master

Allow flannel interface to be specified on the command line
This commit is contained in:
Darren Shepherd 2019-04-15 10:01:22 -07:00 committed by GitHub
commit 08c3d0d4ef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 29 additions and 8 deletions

View File

@ -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

View File

@ -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)

View File

@ -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)
}()

View File

@ -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,

View File

@ -134,6 +134,7 @@ func NewServerCommand(action func(*cli.Context) error) cli.Command {
NodeNameFlag,
DockerFlag,
FlannelFlag,
FlannelIfaceFlag,
CRIEndpointFlag,
ResolvConfFlag,
ExtraKubeletArgs,

View File

@ -15,6 +15,7 @@ type Node struct {
ContainerRuntimeEndpoint string
NoFlannel bool
FlannelConf string
FlannelIface *net.Interface
LocalAddress string
Containerd Containerd
Images string