针对单个请求运行“ kubectl代理”

时间:2019-02-26 18:46:57

标签: kubernetes kubectl

有什么方法可以运行kubectl proxy,给它一个命令作为输入,并在收到响应时将其关闭?

我正在想象带有-u(unix套接字)标志的东西,像这样:

kubectl proxy -u - < $(echo "GET /api/v1/namespaces/default")

我认为这是不可能的,但是也许我的插座fu不够坚固。

2 个答案:

答案 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域套接字并调用curl --unix-socket ./foo.sock http:/api/v1/namespaces/default等。