diff --git a/cmd/virtual-kubelet/commands/root/flag.go b/cmd/virtual-kubelet/commands/root/flag.go index 85e04ae16..6c567c226 100644 --- a/cmd/virtual-kubelet/commands/root/flag.go +++ b/cmd/virtual-kubelet/commands/root/flag.go @@ -60,6 +60,7 @@ func (mv mapVar) Type() string { func installFlags(flags *pflag.FlagSet, c *Opts) { flags.StringVar(&c.KubeConfigPath, "kubeconfig", c.KubeConfigPath, "kube config file to use for connecting to the Kubernetes API server") flags.StringVar(&c.KubeNamespace, "namespace", c.KubeNamespace, "kubernetes namespace (default is 'all')") + flags.StringVar(&c.KubeClusterDomain, "cluster-domain", c.KubeClusterDomain, "kubernetes cluster-domain (default is 'cluster.local')") flags.StringVar(&c.NodeName, "nodename", c.NodeName, "kubernetes node name") flags.StringVar(&c.OperatingSystem, "os", c.OperatingSystem, "Operating System (Linux/Windows)") flags.StringVar(&c.Provider, "provider", c.Provider, "cloud provider") diff --git a/cmd/virtual-kubelet/commands/root/opts.go b/cmd/virtual-kubelet/commands/root/opts.go index e0829706f..eba065c07 100644 --- a/cmd/virtual-kubelet/commands/root/opts.go +++ b/cmd/virtual-kubelet/commands/root/opts.go @@ -34,6 +34,7 @@ const ( DefaultListenPort = 10250 // TODO(cpuguy83)(VK1.0): Change this to an addr instead of just a port.. we should not be listening on all interfaces. DefaultPodSyncWorkers = 10 DefaultKubeNamespace = corev1.NamespaceAll + DefaultKubeClusterDomain = "cluster.local" DefaultTaintEffect = string(corev1.TaintEffectNoSchedule) DefaultTaintKey = "virtual-kubelet.io/provider" @@ -49,6 +50,9 @@ type Opts struct { KubeConfigPath string // Namespace to watch for pods and other resources KubeNamespace string + // Domain suffix to append to search domains for the pods created by virtual-kubelet + KubeClusterDomain string + // Sets the port to listen for requests from the Kubernetes API server ListenPort int32 @@ -127,6 +131,10 @@ func SetDefaultOpts(c *Opts) error { c.KubeNamespace = DefaultKubeNamespace } + if c.KubeClusterDomain == "" { + c.KubeClusterDomain = DefaultKubeClusterDomain + } + if c.TaintKey == "" { c.TaintKey = DefaultTaintKey } diff --git a/cmd/virtual-kubelet/commands/root/root.go b/cmd/virtual-kubelet/commands/root/root.go index 475db0513..715cfd8c8 100644 --- a/cmd/virtual-kubelet/commands/root/root.go +++ b/cmd/virtual-kubelet/commands/root/root.go @@ -126,6 +126,7 @@ func runRootCommand(ctx context.Context, s *providers.Store, c Opts) error { ResourceManager: rm, DaemonPort: int32(c.ListenPort), InternalIP: os.Getenv("VKUBELET_POD_IP"), + KubeClusterDomain: c.KubeClusterDomain, } pInit := s.Get(c.Provider) diff --git a/providers/store.go b/providers/store.go index d98b5299d..8799b12cd 100644 --- a/providers/store.go +++ b/providers/store.go @@ -62,12 +62,13 @@ func (s *Store) Exists(name string) bool { // InitConfig is the config passed to initialize a registered provider. type InitConfig struct { - ConfigPath string - NodeName string - OperatingSystem string - InternalIP string - DaemonPort int32 - ResourceManager *manager.ResourceManager + ConfigPath string + NodeName string + OperatingSystem string + InternalIP string + DaemonPort int32 + KubeClusterDomain string + ResourceManager *manager.ResourceManager } type InitFunc func(InitConfig) (Provider, error)