【问题标题】:How to stop kubectl proxy如何停止 kubectl 代理
【发布时间】:2020-12-19 05:24:09
【问题描述】:

我执行了以下命令:

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

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

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

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

【问题讨论】:

    标签: kubernetes kubectl


    【解决方案1】:

    我相信“kubectl 方式”是根本不让代理后台运行,因为它旨在成为一个短暂运行的进程,无需进一步身份验证即可访问本地计算机上的 API。

    除了 kill 或 ^C(如果不在后台)之外,没有其他方法可以阻止它。

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

    【讨论】:

    • ^C 没有为我终止进程:\
    【解决方案2】:

    运行此命令找出进程 id (pid):

    netstat -tulp | grep kubectl 
    

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

    【讨论】:

    • ist 必须是 netstat 而不是 netsat
    【解决方案3】:
    ps -ef | grep "kubectl proxy"
    

    会显示进程的PID

    然后你可以用

    停止它
    kill -9 <pid>
    

    【讨论】:

    • 杀戮总是一种选择
    【解决方案4】:

    根据平台,您可以将代理包装在服务/守护程序中,但似乎有点矫枉过正,我只会添加别名或函数来启动并在您的终端/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"
    }
    

    【讨论】:

      【解决方案5】:

      以下内容在 MacOS 中适用于我

      pkill -9 -f "kubectl proxy"

      【讨论】:

        【解决方案6】:

        过滤 (grep) 所有“kube” pid 并使用循环终止:

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

        【讨论】:

        • 杀戮总是一种选择
        【解决方案7】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-11-17
          • 2017-05-19
          • 1970-01-01
          • 1970-01-01
          • 2016-09-08
          • 1970-01-01
          相关资源
          最近更新 更多