运行 单个请求的“kubectl 代理”
Running “kubectl proxy” for a single request
有没有办法运行 kubectl proxy
,给它一个命令作为输入,并在收到响应时关闭它?
我在想象一些带有 -u
(unix socket) 标志的东西,像这样:
kubectl proxy -u - < $(echo "GET /api/v1/namespaces/default")
我不认为这是可能的,但也许我的插座功能不够强大。
你不需要长-运行 kubectl proxy
。
试试这个:
kubectl get --raw=/api/v1/namespaces/default
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 域套接字并调用
curl --unix-socket ./foo.sock http:/api/v1/namespaces/default
等
有没有办法运行 kubectl proxy
,给它一个命令作为输入,并在收到响应时关闭它?
我在想象一些带有 -u
(unix socket) 标志的东西,像这样:
kubectl proxy -u - < $(echo "GET /api/v1/namespaces/default")
我不认为这是可能的,但也许我的插座功能不够强大。
你不需要长-运行 kubectl proxy
。
试试这个:
kubectl get --raw=/api/v1/namespaces/default
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 域套接字并调用
curl --unix-socket ./foo.sock http:/api/v1/namespaces/default
等