以下のコマンドを実行しました:
kubectl proxy --port=8081 &
kubectl proxy --port=8082 &
そしてもちろん、私は2つのアクセス可能なエンドポイントを持っています:
curl http://localhost:8081/api/
curl http://localhost:8082/api/
しかし同時に、同じコンテンツを提供する2つの実行中のプロセス。これらのプロセスの1つを「kubectl」方式で停止する方法は?もちろん、私はプロセスを殺すことができますが、それはあまりエレガントな方法ではないようです...
「kubectlの方法」は、プロキシをまったくバックグラウンドにしないことだと思います。これは、認証を行わずにローカルマシンのAPIにアクセスするための短い実行プロセスであるためです。
Killまたは^ C(バックグラウンドでない場合)以外で停止する方法はありません。
ただし、標準のシェルトリックを使用できます。したがって、fg
を実行すると^ Cが機能するか、kill %1
次のコマンドを実行して、プロセスID(pid)を把握します。
netstat -tulp | grep kubectl
次に、Sudo kill -9 <pid>
を実行してプロセスを強制終了します。
すべての「kube」pidをフィルタリング(grep)し、ループで強制終了します。
for pid in `netstat -tulp | grep kube | awk '{print $7}' | awk -F"/" '{print $1}'| uniq`
do
kill -9 $pid
done
ps -ef | grep "kubectl proxy"
プロセスのPIDが表示されます
その後、あなたはそれを止めることができます
kill -9 <pid>
以下はMacOSで私のために働く
pkill -9 -f "kubectl proxy"