diff --git a/README.md b/README.md index 5e35922..ac56669 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,8 @@ $ docker run -p5901:5900 \ storaxdev/kubedoom:0.5.0 ``` +Optionally, if you set `-e NAMESPACE={your namespace}` you can limit Kubedoom to deleting pods in a single namespace + ### With Podman Run `storaxdev/kubedoom:0.5.0` with podman locally: @@ -97,7 +99,7 @@ the worker node. Then run kubedoom inside the cluster by applying the manifest provided in this repository: ```console -$ kubectl apply -f manifest/ +$ kubectl apply -k manifest/ namespace/kubedoom created deployment.apps/kubedoom created serviceaccount/kubedoom created diff --git a/kubedoom.go b/kubedoom.go index f0d3758..d0349cf 100644 --- a/kubedoom.go +++ b/kubedoom.go @@ -25,7 +25,7 @@ func hash(input string) int32 { func runCmd(cmdstring string) { parts := strings.Split(cmdstring, " ") - cmd := exec.Command(parts[0], parts[1:len(parts)]...) + cmd := exec.Command(parts[0], parts[1:]...) cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr err := cmd.Run() @@ -35,7 +35,7 @@ func runCmd(cmdstring string) { } func outputCmd(argv []string) string { - cmd := exec.Command(argv[0], argv[1:len(argv)]...) + cmd := exec.Command(argv[0], argv[1:]...) cmd.Stderr = os.Stderr output, err := cmd.Output() if err != nil { @@ -46,7 +46,7 @@ func outputCmd(argv []string) string { func startCmd(cmdstring string) { parts := strings.Split(cmdstring, " ") - cmd := exec.Command(parts[0], parts[1:len(parts)]...) + cmd := exec.Command(parts[0], parts[1:]...) cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr cmd.Stdin = os.Stdin @@ -65,7 +65,12 @@ type podmode struct { } func (m podmode) getEntities() []string { - args := []string{"kubectl", "get", "pods", "-A", "-o", "go-template", "--template={{range .items}}{{.metadata.namespace}}/{{.metadata.name}} {{end}}"} + var args []string + if namespace, exists := os.LookupEnv("NAMESPACE"); exists { + args = []string{"kubectl", "get", "pods", "--namespace", namespace, "-o", "go-template", "--template={{range .items}}{{.metadata.namespace}}/{{.metadata.name}} {{end}}"} + } else { + args = []string{"kubectl", "get", "pods", "-A", "-o", "go-template", "--template={{range .items}}{{.metadata.namespace}}/{{.metadata.name}} {{end}}"} + } output := outputCmd(args) outputstr := strings.TrimSpace(output) pods := strings.Split(outputstr, " ") @@ -97,7 +102,7 @@ func (m nsmode) deleteEntity(entity string) { } func socketLoop(listener net.Listener, mode Mode) { - for true { + for { conn, err := listener.Accept() if err != nil { panic(err)