如何停止 kubectl 代理

How to stop kubectl proxy

我执行了以下命令:

kubectl proxy --port=8081 &
kubectl proxy --port=8082 &

当然我有 2 个可访问端点:

curl http://localhost:8081/api/
curl http://localhost:8082/api/

但同时有两个 运行 进程提供相同的内容。 如何以 "kubectl" 方式停止这些进程之一? 当然,我可以终止进程,但这似乎是一种不太优雅的方式...

我相信 "kubectl way" 根本不会让代理后台运行,因为它旨在成为一个简短的 运行 进程,无需进一步验证即可访问本地计算机上的 API .

除了 kill 或 ^C(如果不在后台),没有办法阻止它。

虽然您可以使用标准的 shell 技巧,因此执行 fg 然后 ^C 将起作用或 kill %1

运行 这个命令用来计算进程id (pid):

netstat -tulp | grep kubectl 

然后运行sudo kill -9 <pid>杀进程

过滤(grep)所有 "kube" pids 并用循环杀死:

for pid in `netstat -tulp | grep kube | awk '{print }' | awk -F"/" '{print }'| uniq`
 do
   kill -9 $pid
 done
ps -ef | grep "kubectl proxy"

将显示进程的 PID

然后你可以用

停止它
kill -9 <pid>

以下在 MacOS 中对我有效

pkill -9 -f "kubectl proxy"

根据平台的不同,您可以将代理包装在服务/守护进程中,但似乎有点矫枉过正,我只想添加别名或函数来启动并在您的 terminal/shell 配置文件中获取它们以使其更容易。

https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingLaunchdJobs.html

kubectl-proxy-start() {
    kubectl proxy &
}

kubectl-proxy-kill() {
    pkill -9 -f "kubectl proxy"
}

试试这个,当然要使用你的端口号

$ pkill -f 'kubectl proxy --port=8080'