From bb961ec4d069403985d0d3c274c2839f64e616d7 Mon Sep 17 00:00:00 2001 From: halewang Date: Tue, 26 Mar 2024 19:36:29 +0800 Subject: [PATCH 1/3] updata README --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ff40141..eb7e257 100644 --- a/README.md +++ b/README.md @@ -22,13 +22,13 @@ ```shell # 适用超级节点 -$ kubectl debugger pod -n -i --rm +$ kubectl debugger pod -n -i --rm -- COMMAND ``` ### 普通节点或者原生节点 ```shell # 适用普通节点和原生节点 -$ kubectl debugger node -i --rm +$ kubectl debugger node -i --rm -- COMMAND ``` ## 超级节点场景特殊说明 From 48fa9d3e44382ce32f258a67fd46bd620917f2dc Mon Sep 17 00:00:00 2001 From: halewang Date: Thu, 28 Mar 2024 16:22:53 +0800 Subject: [PATCH 2/3] setting debugger pod rm is true --- cmd/node.go | 4 +++- cmd/pod.go | 10 +++++++--- src/k8s/k8s.go | 3 +++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/cmd/node.go b/cmd/node.go index 1f2c857..04d220a 100644 --- a/cmd/node.go +++ b/cmd/node.go @@ -61,6 +61,8 @@ func (o *NodeCmdOptions) run() { case k8s.SuperNodeType: klog.Warning("kubectl debugger node 子命令不支持超级节点, 请使用 kubectl debugger pod 子命令.") case k8s.NormalNodeType: - klog.Fatal(plugin.SpawnDebuggerPodOnNormalNode(client, helper)) + if err = plugin.SpawnDebuggerPodOnNormalNode(client, helper); err != nil { + klog.Fatal(err) + } } } diff --git a/cmd/pod.go b/cmd/pod.go index 40739df..c184d90 100644 --- a/cmd/pod.go +++ b/cmd/pod.go @@ -35,7 +35,7 @@ func newPodCmd() *cobra.Command { podCmd.Flags().StringVarP(&opt.Namespace, "namespace", "n", "default", "Namespace of the debug pod") podCmd.Flags().StringVarP(&opt.Image, "image", "i", "busybox", "Image of the debug pod") - podCmd.Flags().BoolVarP(&opt.Rm, "rm", "r", false, "Remove the debug pod after it exits") + podCmd.Flags().BoolVarP(&opt.Rm, "rm", "r", true, "Remove the debug pod after it exits") return podCmd } @@ -68,10 +68,14 @@ func (o *PodCmdOptions) run() { switch nodeType { case k8s.NormalNodeType: - klog.Fatal(plugin.SpawnDebuggerPodOnNormalNode(client, helper)) + if err = plugin.SpawnDebuggerPodOnNormalNode(client, helper); err != nil { + klog.Fatal(err) + } case k8s.SuperNodeType: klog.Info("超级节点") - klog.Fatal(plugin.SpawnDebuggerPodOnSuperNode(client, helper)) + if err = plugin.SpawnDebuggerPodOnSuperNode(client, helper); err != nil { + klog.Fatal(err) + } } } diff --git a/src/k8s/k8s.go b/src/k8s/k8s.go index 5162923..c850f1f 100644 --- a/src/k8s/k8s.go +++ b/src/k8s/k8s.go @@ -142,6 +142,9 @@ func (c *KubernetesClient) RemovePodAnnotation(podName, namespace string) error // 移除指定的注解 annotations := pod.GetAnnotations() if annotations != nil { + if _, exists := annotations[EksDebuggerPodAnnotationKey]; !exists { + return nil + } delete(annotations, EksDebuggerPodAnnotationKey) pod.SetAnnotations(annotations) } From dd06c104b452912ff8dadb85955c528bef3ae08d Mon Sep 17 00:00:00 2001 From: wangycc Date: Thu, 26 Dec 2024 17:44:53 +0800 Subject: [PATCH 3/3] Fix: Update debugger container name --- src/k8s/k8s.go | 2 +- src/plugin/plugin.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/k8s/k8s.go b/src/k8s/k8s.go index c850f1f..4bc7aba 100644 --- a/src/k8s/k8s.go +++ b/src/k8s/k8s.go @@ -170,7 +170,7 @@ func (c *KubernetesClient) IsDebuggerContainerRunning(podName, namespace string) // 检查指定容器的状态 for _, container := range pod.Status.ContainerStatuses { - if container.Name == "debugger" { + if container.Name == "[pod-debugger]debugger" { return container.State.Running != nil, nil } } diff --git a/src/plugin/plugin.go b/src/plugin/plugin.go index 8aa2c8a..73e324b 100644 --- a/src/plugin/plugin.go +++ b/src/plugin/plugin.go @@ -38,7 +38,7 @@ func SpawnDebuggerPodOnSuperNode(client *k8s.KubernetesClient, helper *DebuggerP fmt.Printf("spawning debugger pod in pod %s success\n", helper.PodName) - err = client.ExecCommand(helper.PodName, helper.Namespace, "debugger", helper.Command) + err = client.ExecCommand(helper.PodName, helper.Namespace, "[pod-debugger]debugger", helper.Command) // 仅输出报错,依然根据 --rm 参数删除pod if err != nil { klog.Errorf("Error executing command: %v\n", err)