Merge pull request #22974 from mesosphere/jdef-forward-housekeeping-flags
Auto commit by PR queue bot
This commit is contained in:
		
							
								
								
									
										51
									
								
								contrib/mesos/pkg/flagutil/cadvisor.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								contrib/mesos/pkg/flagutil/cadvisor.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,51 @@ | ||||
| /* | ||||
| Copyright 2016 The Kubernetes Authors All rights reserved. | ||||
|  | ||||
| Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| you may not use this file except in compliance with the License. | ||||
| You may obtain a copy of the License at | ||||
|  | ||||
|     http://www.apache.org/licenses/LICENSE-2.0 | ||||
|  | ||||
| Unless required by applicable law or agreed to in writing, software | ||||
| distributed under the License is distributed on an "AS IS" BASIS, | ||||
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| See the License for the specific language governing permissions and | ||||
| limitations under the License. | ||||
| */ | ||||
|  | ||||
| package flagutil | ||||
|  | ||||
| import ( | ||||
| 	"flag" | ||||
|  | ||||
| 	// TODO(jdef) kill this once cadvisor flags are no longer configured by | ||||
| 	// global variables. Importing it this way guarantees that the global flag | ||||
| 	// variables are initialized. | ||||
| 	_ "github.com/google/cadvisor/manager" | ||||
| 	// kubelet attempts to customize default values for some cadvisor flags, so | ||||
| 	// make sure that we pick these up. | ||||
| 	_ "k8s.io/kubernetes/pkg/kubelet/cadvisor" | ||||
| ) | ||||
|  | ||||
| // FlagFunc retrieves a specific flag instance; returns nil if the flag is not configured. | ||||
| type FlagFunc func() *flag.Flag | ||||
|  | ||||
| // NameValue returns the name and value of a flag, if it exists, otherwise empty strings. | ||||
| func (ff FlagFunc) NameValue() (name, value string) { | ||||
| 	if f := ff(); f != nil { | ||||
| 		name, value = f.Name, f.Value.String() | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func flagFunc(name string) FlagFunc { return func() *flag.Flag { return flag.Lookup(name) } } | ||||
|  | ||||
| // Cadvisor fields return the configured values of cadvisor global flags | ||||
| var Cadvisor = struct { | ||||
| 	HousekeepingInterval       FlagFunc | ||||
| 	GlobalHousekeepingInterval FlagFunc | ||||
| }{ | ||||
| 	flagFunc("housekeeping_interval"), | ||||
| 	flagFunc("global_housekeeping_interval"), | ||||
| } | ||||
| @@ -33,6 +33,7 @@ import ( | ||||
| 	"gopkg.in/natefinch/lumberjack.v2" | ||||
| 	kubeletapp "k8s.io/kubernetes/cmd/kubelet/app" | ||||
| 	exservice "k8s.io/kubernetes/contrib/mesos/pkg/executor/service" | ||||
| 	"k8s.io/kubernetes/contrib/mesos/pkg/flagutil" | ||||
| 	"k8s.io/kubernetes/contrib/mesos/pkg/hyperkube" | ||||
| 	"k8s.io/kubernetes/contrib/mesos/pkg/minion/config" | ||||
| 	"k8s.io/kubernetes/contrib/mesos/pkg/minion/tasks" | ||||
| @@ -177,9 +178,18 @@ func (ms *MinionServer) launchExecutorServer(containerID string) <-chan struct{} | ||||
|  | ||||
| 	// disable resource-container; mesos slave doesn't like sub-containers yet | ||||
| 	executorArgs = append(executorArgs, "--kubelet-cgroups=") | ||||
| 	if ms.cgroupRoot != "" { | ||||
| 		executorArgs = append(executorArgs, "--cgroup-root="+ms.cgroupRoot) | ||||
|  | ||||
| 	appendOptional := func(name, value string) { | ||||
| 		if value != "" { | ||||
| 			executorArgs = append(executorArgs, "--"+name+"="+value) | ||||
| 		} | ||||
| 	} | ||||
| 	appendOptional("cgroup-root", ms.cgroupRoot) | ||||
|  | ||||
| 	// forward global cadvisor flag values to the executor | ||||
| 	// TODO(jdef) remove this code once cadvisor global flags have been cleaned up | ||||
| 	appendOptional(flagutil.Cadvisor.HousekeepingInterval.NameValue()) | ||||
| 	appendOptional(flagutil.Cadvisor.GlobalHousekeepingInterval.NameValue()) | ||||
|  | ||||
| 	// forward containerID so that the executor may pass it along to containers that it launches | ||||
| 	var ctidOpt tasks.Option | ||||
|   | ||||
| @@ -50,6 +50,7 @@ import ( | ||||
|  | ||||
| 	"k8s.io/kubernetes/contrib/mesos/pkg/election" | ||||
| 	execcfg "k8s.io/kubernetes/contrib/mesos/pkg/executor/config" | ||||
| 	"k8s.io/kubernetes/contrib/mesos/pkg/flagutil" | ||||
| 	"k8s.io/kubernetes/contrib/mesos/pkg/hyperkube" | ||||
| 	minioncfg "k8s.io/kubernetes/contrib/mesos/pkg/minion/config" | ||||
| 	"k8s.io/kubernetes/contrib/mesos/pkg/podutil" | ||||
| @@ -495,6 +496,10 @@ func (s *SchedulerServer) prepareExecutorInfo(hks hyperkube.Interface) (*mesos.E | ||||
| 	appendOptional("host-network-sources", s.kubeletHostNetworkSources) | ||||
| 	appendOptional("network-plugin", s.kubeletNetworkPluginName) | ||||
|  | ||||
| 	// TODO(jdef) this code depends on poorly scoped cadvisor flags, will need refactoring soon | ||||
| 	appendOptional(flagutil.Cadvisor.HousekeepingInterval.NameValue()) | ||||
| 	appendOptional(flagutil.Cadvisor.GlobalHousekeepingInterval.NameValue()) | ||||
|  | ||||
| 	log.V(1).Infof("prepared executor command %q with args '%+v'", ci.GetValue(), ci.Arguments) | ||||
|  | ||||
| 	// Create mesos scheduler driver. | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 k8s-merge-robot
					k8s-merge-robot