diff options
| author | luomengY <2938893385@qq.com> | 2023-08-30 21:50:01 +0800 |
|---|---|---|
| committer | luomengY <2938893385@qq.com> | 2023-09-23 15:41:03 +0800 |
| commit | 146654ade70f96302a45a75988ff8e32cfa51217 (patch) | |
| tree | 6208f3c309883586abe5ae5d1ea48f18fe5bf7c4 /edge/pkg | |
| parent | Merge pull request #5006 from wlq1212/k8scompatibility/schedule (diff) | |
| download | kubeedge-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.go | 1 | ||||
| -rw-r--r-- | edge/pkg/edged/edged.go | 9 | ||||
| -rw-r--r-- | edge/pkg/edged/kubeclientbridge/typed/core/v1/pod_bridge.go | 4 | ||||
| -rw-r--r-- | edge/pkg/metamanager/client/pod.go | 21 |
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 } |
