summaryrefslogtreecommitdiff
path: root/edge/pkg
diff options
context:
space:
mode:
authorluomengY <2938893385@qq.com>2023-08-30 21:50:01 +0800
committerluomengY <2938893385@qq.com>2023-09-23 15:41:03 +0800
commit146654ade70f96302a45a75988ff8e32cfa51217 (patch)
tree6208f3c309883586abe5ae5d1ea48f18fe5bf7c4 /edge/pkg
parentMerge pull request #5006 from wlq1212/k8scompatibility/schedule (diff)
downloadkubeedge-146654ade70f96302a45a75988ff8e32cfa51217.tar.gz
add support static in kubeedge
Signed-off-by: luomengY <2938893385@qq.com>
Diffstat (limited to 'edge/pkg')
-rw-r--r--edge/pkg/edged/config/config.go1
-rw-r--r--edge/pkg/edged/edged.go9
-rw-r--r--edge/pkg/edged/kubeclientbridge/typed/core/v1/pod_bridge.go4
-rw-r--r--edge/pkg/metamanager/client/pod.go21
4 files changed, 32 insertions, 3 deletions
diff --git a/edge/pkg/edged/config/config.go b/edge/pkg/edged/config/config.go
index 52228dbad..7d217dbae 100644
--- a/edge/pkg/edged/config/config.go
+++ b/edge/pkg/edged/config/config.go
@@ -33,6 +33,7 @@ func InitConfigure(e *v1alpha2.Edged) {
}
func ConvertEdgedKubeletConfigurationToConfigKubeletConfiguration(in *v1alpha2.TailoredKubeletConfiguration, out *kubeletconfig.KubeletConfiguration, s conversion.Scope) error {
+ out.StaticPodPath = in.StaticPodPath
out.SyncFrequency = in.SyncFrequency
out.Address = in.Address
out.ReadOnlyPort = in.ReadOnlyPort
diff --git a/edge/pkg/edged/edged.go b/edge/pkg/edged/edged.go
index 82f982f13..fd3b02b37 100644
--- a/edge/pkg/edged/edged.go
+++ b/edge/pkg/edged/edged.go
@@ -170,6 +170,15 @@ func newEdged(enable bool, nodeName, namespace string) (*edged, error) {
KubeletFlags: kubeletFlags,
KubeletConfiguration: kubeletConfig,
}
+
+ if kubeletConfig.StaticPodPath != "" {
+ if err := os.MkdirAll(kubeletConfig.StaticPodPath, os.ModePerm); err != nil {
+ return nil, fmt.Errorf("create %s static pod path failed: %v", kubeletConfig.StaticPodPath, err)
+ }
+ } else {
+ klog.ErrorS(err, "static pod path is nil!")
+ }
+
nodestatus.KubeletVersion = fmt.Sprintf("%s-kubeedge-%s", constants.CurrentSupportK8sVersion, version.Get())
// use kubeletServer to construct the default KubeletDeps
kubeletDeps, err := DefaultKubeletDeps(&kubeletServer, utilfeature.DefaultFeatureGate)
diff --git a/edge/pkg/edged/kubeclientbridge/typed/core/v1/pod_bridge.go b/edge/pkg/edged/kubeclientbridge/typed/core/v1/pod_bridge.go
index 62095753b..821902fd9 100644
--- a/edge/pkg/edged/kubeclientbridge/typed/core/v1/pod_bridge.go
+++ b/edge/pkg/edged/kubeclientbridge/typed/core/v1/pod_bridge.go
@@ -47,3 +47,7 @@ func (c *PodsBridge) Patch(ctx context.Context, name string, pt types.PatchType,
func (c *PodsBridge) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error {
return c.MetaClient.Pods(c.ns).Delete(name, opts)
}
+
+func (c *PodsBridge) Create(ctx context.Context, pod *corev1.Pod, opts metav1.CreateOptions) (result *corev1.Pod, err error) {
+ return c.MetaClient.Pods(c.ns).Create(pod)
+}
diff --git a/edge/pkg/metamanager/client/pod.go b/edge/pkg/metamanager/client/pod.go
index d6c9218b8..c78cea878 100644
--- a/edge/pkg/metamanager/client/pod.go
+++ b/edge/pkg/metamanager/client/pod.go
@@ -52,7 +52,19 @@ func newPods(namespace string, s SendInterface) *pods {
}
func (c *pods) Create(cm *corev1.Pod) (*corev1.Pod, error) {
- return nil, nil
+ resource := fmt.Sprintf("%s/%s/%s", c.namespace, model.ResourceTypeCreatePod, cm.Name)
+ podMsg := message.BuildMsg(modules.MetaGroup, "", modules.EdgedModuleName, resource, model.InsertOperation, *cm)
+ resp, err := c.send.SendSync(podMsg)
+ if err != nil {
+ return nil, fmt.Errorf("create pod failed, err: %v", err)
+ }
+
+ content, err := resp.GetContentData()
+ if err != nil {
+ return nil, fmt.Errorf("parse message to pod failed, err: %v", err)
+ }
+
+ return handlePodResp(resource, content)
}
func (c *pods) Update(cm *corev1.Pod) error {
@@ -149,8 +161,11 @@ func handlePodResp(resource string, content []byte) (*corev1.Pod, error) {
}
if reflect.DeepEqual(podResp.Err, apierrors.StatusError{}) {
- if err = updatePodDB(resource, podResp.Object); err != nil {
- return nil, fmt.Errorf("update pod meta failed, err: %v", err)
+ resourceArray := strings.Split(resource, constants.ResourceSep)
+ if !(len(resourceArray) >= 2 && resourceArray[1] == model.ResourceTypeCreatePod) {
+ if err = updatePodDB(resource, podResp.Object); err != nil {
+ return nil, fmt.Errorf("update pod meta failed, err: %v", err)
+ }
}
return podResp.Object, nil
}