有什么方法可以运行kubectl proxy
,给它一个命令作为输入,并在收到响应时将其关闭?
我正在想象带有-u
(unix套接字)标志的东西,像这样:
kubectl proxy -u - < $(echo "GET /api/v1/namespaces/default")
我认为这是不可能的,但是也许我的插座fu不够坚固。
答案 0 :(得分:0)
您不需要长时间运行的kubectl proxy
。
尝试一下:
kubectl get --raw=/api/v1/namespaces/default
答案 1 :(得分:0)
kubectl proxy
不会给您任何方式来运行一次性请求并终止代理。
在后台启动命令,运行命令并最终终止最初启动的命令的通用方法是编写bash脚本,例如:
#!/usr/bin/env bash
set -eu
kubectl proxy &
proxy_pid=$!
echo $proxy_pid
until curl -fsSL http://localhost:8001/ > /dev/null; do
echo "waiting for kubectl proxy" >&2
sleep 5
# TODO add max retries so you can break out of this
done
curl http://localhost:8001/api/v1/namespaces/default
function cleanup {
echo "killing kubectl proxy" >&2
kill $proxy_pid
}
trap cleanup EXIT
如果您确实想使用套接字:
kubectl proxy -u ./foo.sock
之类的unix域套接字curl --unix-socket ./foo.sock http:/api/v1/namespaces/default
等。