summaryrefslogtreecommitdiff
path: root/edge
diff options
context:
space:
mode:
authorstacktasec <stacktasec@gmail.com>2020-03-08 14:42:59 +0800
committerstacktasec <stacktasec@gmail.com>2020-03-08 14:42:59 +0800
commit24faa2c74c888324e1934c90911c1eb6554d585e (patch)
treecba9649c383cc5afc3893b2721066cc75e0480f3 /edge
parentadd func util.SpliceErrors (diff)
parentMerge pull request #1518 from xmwilldo/configmap-env-var (diff)
downloadkubeedge-24faa2c74c888324e1934c90911c1eb6554d585e.tar.gz
Merge remote-tracking branch 'upstream/master' into add_printbyline_func
Diffstat (limited to 'edge')
-rw-r--r--edge/pkg/edged/edged.go29
-rw-r--r--edge/pkg/edged/edged_pods.go42
-rw-r--r--edge/pkg/edged/fake/typed/core/v1/fake_configmap.go20
-rw-r--r--edge/pkg/edged/fake/typed/core/v1/fake_core_client.go4
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}
+}