运行 单个请求的“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