From 146654ade70f96302a45a75988ff8e32cfa51217 Mon Sep 17 00:00:00 2001 From: luomengY <2938893385@qq.com> Date: Wed, 30 Aug 2023 21:50:01 +0800 Subject: add support static in kubeedge Signed-off-by: luomengY <2938893385@qq.com> --- edge/pkg/edged/config/config.go | 1 + edge/pkg/edged/edged.go | 9 +++++++++ .../kubeclientbridge/typed/core/v1/pod_bridge.go | 4 ++++ edge/pkg/metamanager/client/pod.go | 21 ++++++++++++++++++--- 4 files changed, 32 insertions(+), 3 deletions(-) (limited to 'edge/pkg') 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 } -- cgit v1.2.3