diff options
| author | stacktasec <stacktasec@gmail.com> | 2020-03-08 14:42:59 +0800 |
|---|---|---|
| committer | stacktasec <stacktasec@gmail.com> | 2020-03-08 14:42:59 +0800 |
| commit | 24faa2c74c888324e1934c90911c1eb6554d585e (patch) | |
| tree | cba9649c383cc5afc3893b2721066cc75e0480f3 /edge | |
| parent | add func util.SpliceErrors (diff) | |
| parent | Merge pull request #1518 from xmwilldo/configmap-env-var (diff) | |
| download | kubeedge-24faa2c74c888324e1934c90911c1eb6554d585e.tar.gz | |
Merge remote-tracking branch 'upstream/master' into add_printbyline_func
Diffstat (limited to 'edge')
| -rw-r--r-- | edge/pkg/edged/edged.go | 29 | ||||
| -rw-r--r-- | edge/pkg/edged/edged_pods.go | 42 | ||||
| -rw-r--r-- | edge/pkg/edged/fake/typed/core/v1/fake_configmap.go | 20 | ||||
| -rw-r--r-- | edge/pkg/edged/fake/typed/core/v1/fake_core_client.go | 4 |
4 files changed, 76 insertions, 19 deletions
diff --git a/edge/pkg/edged/edged.go b/edge/pkg/edged/edged.go index ecd73d322..6ea551bf1 100644 --- a/edge/pkg/edged/edged.go +++ b/edge/pkg/edged/edged.go @@ -54,6 +54,7 @@ import ( kubeletinternalconfig "k8s.io/kubernetes/pkg/kubelet/apis/config" "k8s.io/kubernetes/pkg/kubelet/cm" "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager" + klconfigmap "k8s.io/kubernetes/pkg/kubelet/configmap" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" "k8s.io/kubernetes/pkg/kubelet/dockershim" dockerremote "k8s.io/kubernetes/pkg/kubelet/dockershim/remote" @@ -113,7 +114,6 @@ import ( const ( plegChannelCapacity = 1000 plegRelistPeriod = time.Second * 1 - concurrentConsumers = 5 backOffPeriod = 10 * time.Second // MaxContainerBackOff is the max backoff period, exported for the e2e test MaxContainerBackOff = 300 * time.Second @@ -146,14 +146,6 @@ const ( NonMasqueradeCIDR = "10.0.0.1/8" //cgroupName used for check if the cgroup is mounted.(default "") cgroupName = "" - // PluginName gives the plugin name.(default "",use noop plugin) - pluginName = "" - //PluginBinDir gives the dir of cni plugin executable file - pluginBinDir = "/opt/cni/bin" - // PluginConfDir gives the dir of cni plugin confguration file - pluginConfDir = "/etc/cni/net.d" - //MTU give the default maximum transmission unit of net interface - mtu = 1500 // redirectContainerStream decide whether to redirect the container stream redirectContainerStream = false // ResolvConfDefault gives the default dns resolv configration file @@ -185,6 +177,7 @@ type edged struct { registrationCompleted bool containerManager cm.ContainerManager containerRuntimeName string + concurrentConsumers int // container runtime containerRuntime kubecontainer.Runtime podCache kubecontainer.Cache @@ -232,6 +225,8 @@ type edged struct { recorder recordtools.EventRecorder enable bool + + configMapManager klconfigmap.Manager } // Register register edged @@ -269,6 +264,8 @@ func (e *edged) Start() { } e.hostUtil = hostutil.NewHostUtil() + e.configMapManager = klconfigmap.NewSimpleConfigMapManager(e.kubeClient) + e.volumeManager = volumemanager.NewVolumeManager( true, types.NodeName(e.nodeName), @@ -293,8 +290,8 @@ func (e *edged) Start() { e.statusManager.Start() e.pleg.Start() - e.podAddWorkerRun(concurrentConsumers) - e.podRemoveWorkerRun(concurrentConsumers) + e.podAddWorkerRun(e.concurrentConsumers) + e.podRemoveWorkerRun(e.concurrentConsumers) housekeepingTicker := time.NewTicker(housekeepingPeriod) syncWorkQueueCh := time.NewTicker(syncWorkQueuePeriod) @@ -367,6 +364,7 @@ func newEdged(enable bool) (*edged, error) { namespace: edgedconfig.Config.RegisterNodeNamespace, gpuPluginEnabled: edgedconfig.Config.GPUPluginEnabled, cgroupDriver: edgedconfig.Config.CGroupDriver, + concurrentConsumers: edgedconfig.Config.ConcurrentConsumers, podManager: podManager, podAdditionQueue: workqueue.New(), podCache: kubecontainer.NewCache(), @@ -424,10 +422,11 @@ func newEdged(enable bool) (*edged, error) { pluginConfigs := dockershim.NetworkPluginSettings{ HairpinMode: kubeletinternalconfig.HairpinMode(HairpinMode), NonMasqueradeCIDR: NonMasqueradeCIDR, - PluginName: pluginName, - PluginBinDirString: pluginBinDir, - PluginConfDir: pluginConfDir, - MTU: mtu, + PluginName: edgedconfig.Config.NetworkPluginName, + PluginBinDirString: edgedconfig.Config.CNIBinDir, + PluginConfDir: edgedconfig.Config.CNIConfDir, + PluginCacheDir: edgedconfig.Config.CNICacheDir, + MTU: int(edgedconfig.Config.NetworkPluginMTU), } redirectContainerStream := redirectContainerStream diff --git a/edge/pkg/edged/edged_pods.go b/edge/pkg/edged/edged_pods.go index 1e0505d22..7c028d24f 100644 --- a/edge/pkg/edged/edged_pods.go +++ b/edge/pkg/edged/edged_pods.go @@ -40,6 +40,7 @@ import ( "strings" v1 "k8s.io/api/core/v1" + apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" utilfeature "k8s.io/apiserver/pkg/util/feature" @@ -619,6 +620,11 @@ func (e *edged) GetPodDNS(pod *v1.Pod) (*runtimeapi.DNSConfig, error) { // Make the environment variables for a pod in the given namespace. func (e *edged) makeEnvironmentVariables(pod *v1.Pod, container *v1.Container, podIP string, podIPs []string) ([]kubecontainer.EnvVar, error) { + + var result []kubecontainer.EnvVar + + var err error + // Determine the final values of variables: // // 1. Determine the final value of each variable: @@ -629,27 +635,55 @@ func (e *edged) makeEnvironmentVariables(pod *v1.Pod, container *v1.Container, p // 2. Create the container's environment in the order variables are declared // 3. Add remaining service environment vars var ( - result []kubecontainer.EnvVar + configMaps = make(map[string]*v1.ConfigMap) tmpEnv = make(map[string]string) mappingFunc = expansion.MappingFuncFor(tmpEnv) ) + for _, envVar := range container.Env { runtimeVal := envVar.Value if runtimeVal != "" { // Step 1a: expand variable references runtimeVal = expansion.Expand(runtimeVal, mappingFunc) - tmpEnv[envVar.Name] = runtimeVal } else if envVar.ValueFrom != nil { // Step 1b: resolve alternate env var sources switch { case envVar.ValueFrom.FieldRef != nil: - runtimeVal, err := e.podFieldSelectorRuntimeValue(envVar.ValueFrom.FieldRef, pod, podIP, podIPs) + runtimeVal, err = e.podFieldSelectorRuntimeValue(envVar.ValueFrom.FieldRef, pod, podIP, podIPs) if err != nil { return result, err } - tmpEnv[envVar.Name] = runtimeVal + case envVar.ValueFrom.ConfigMapKeyRef != nil: + cm := envVar.ValueFrom.ConfigMapKeyRef + name := cm.Name + key := cm.Key + optional := cm.Optional != nil && *cm.Optional + configMap, ok := configMaps[name] + if !ok { + if e.kubeClient == nil { + return result, fmt.Errorf("Couldn't get configMap %v/%v, no kubeClient defined", pod.Namespace, name) + } + configMap, err = e.configMapManager.GetConfigMap(pod.Namespace, name) + if err != nil { + if apierrors.IsNotFound(err) && optional { + // ignore error when marked optional + continue + } + return result, err + } + configMaps[name] = configMap + } + runtimeVal, ok = configMap.Data[key] + if !ok { + if optional { + continue + } + return result, fmt.Errorf("Couldn't find key %v in ConfigMap %v/%v", key, pod.Namespace, name) + } } } + + tmpEnv[envVar.Name] = runtimeVal } // Append the env vars diff --git a/edge/pkg/edged/fake/typed/core/v1/fake_configmap.go b/edge/pkg/edged/fake/typed/core/v1/fake_configmap.go new file mode 100644 index 000000000..763083683 --- /dev/null +++ b/edge/pkg/edged/fake/typed/core/v1/fake_configmap.go @@ -0,0 +1,20 @@ +package v1 + +import ( + "github.com/kubeedge/kubeedge/edge/pkg/metamanager/client" + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + fakecorev1 "k8s.io/client-go/kubernetes/typed/core/v1/fake" +) + +// FakePersistentVolumeClaims implements PersistentVolumeClaimInterface +type FakeConfigMap struct { + fakecorev1.FakeConfigMaps + ns string + MetaClient client.CoreInterface +} + +// Get takes name of the persistentVolumeClaim, and returns the corresponding persistentVolumeClaim object +func (c *FakeConfigMap) Get(name string, options metav1.GetOptions) (result *corev1.ConfigMap, err error) { + return c.MetaClient.ConfigMaps(c.ns).Get(name) +} diff --git a/edge/pkg/edged/fake/typed/core/v1/fake_core_client.go b/edge/pkg/edged/fake/typed/core/v1/fake_core_client.go index 190dcf3d9..e1bb961c4 100644 --- a/edge/pkg/edged/fake/typed/core/v1/fake_core_client.go +++ b/edge/pkg/edged/fake/typed/core/v1/fake_core_client.go @@ -23,3 +23,7 @@ func (c *FakeCoreV1) PersistentVolumes() corev1.PersistentVolumeInterface { func (c *FakeCoreV1) PersistentVolumeClaims(namespace string) corev1.PersistentVolumeClaimInterface { return &FakePersistentVolumeClaims{fakecorev1.FakePersistentVolumeClaims{Fake: &c.FakeCoreV1}, namespace, c.MetaClient} } + +func (c *FakeCoreV1) ConfigMaps(namespace string) corev1.ConfigMapInterface { + return &FakeConfigMap{fakecorev1.FakeConfigMaps{Fake: &c.FakeCoreV1}, namespace, c.MetaClient} +} |
