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" | 	"gopkg.in/natefinch/lumberjack.v2" | ||||||
| 	kubeletapp "k8s.io/kubernetes/cmd/kubelet/app" | 	kubeletapp "k8s.io/kubernetes/cmd/kubelet/app" | ||||||
| 	exservice "k8s.io/kubernetes/contrib/mesos/pkg/executor/service" | 	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/hyperkube" | ||||||
| 	"k8s.io/kubernetes/contrib/mesos/pkg/minion/config" | 	"k8s.io/kubernetes/contrib/mesos/pkg/minion/config" | ||||||
| 	"k8s.io/kubernetes/contrib/mesos/pkg/minion/tasks" | 	"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 | 	// disable resource-container; mesos slave doesn't like sub-containers yet | ||||||
| 	executorArgs = append(executorArgs, "--kubelet-cgroups=") | 	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 | 	// forward containerID so that the executor may pass it along to containers that it launches | ||||||
| 	var ctidOpt tasks.Option | 	var ctidOpt tasks.Option | ||||||
|   | |||||||
| @@ -50,6 +50,7 @@ import ( | |||||||
|  |  | ||||||
| 	"k8s.io/kubernetes/contrib/mesos/pkg/election" | 	"k8s.io/kubernetes/contrib/mesos/pkg/election" | ||||||
| 	execcfg "k8s.io/kubernetes/contrib/mesos/pkg/executor/config" | 	execcfg "k8s.io/kubernetes/contrib/mesos/pkg/executor/config" | ||||||
|  | 	"k8s.io/kubernetes/contrib/mesos/pkg/flagutil" | ||||||
| 	"k8s.io/kubernetes/contrib/mesos/pkg/hyperkube" | 	"k8s.io/kubernetes/contrib/mesos/pkg/hyperkube" | ||||||
| 	minioncfg "k8s.io/kubernetes/contrib/mesos/pkg/minion/config" | 	minioncfg "k8s.io/kubernetes/contrib/mesos/pkg/minion/config" | ||||||
| 	"k8s.io/kubernetes/contrib/mesos/pkg/podutil" | 	"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("host-network-sources", s.kubeletHostNetworkSources) | ||||||
| 	appendOptional("network-plugin", s.kubeletNetworkPluginName) | 	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) | 	log.V(1).Infof("prepared executor command %q with args '%+v'", ci.GetValue(), ci.Arguments) | ||||||
|  |  | ||||||
| 	// Create mesos scheduler driver. | 	// Create mesos scheduler driver. | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 k8s-merge-robot
					k8s-merge-robot