Kubernetes Javascript 客户端库适用于本地,但不适用于 GKE

Joã*_*eis 5 javascript api http kubernetes google-kubernetes-engine

我正在尝试使用 Kubernetes JS 客户端库,当我在本地环境中尝试它时(我使用 docker 来运行本地 kubernetes),它工作正常,我正在创建一个用于测试目的的 pod,并且该 pod 已创建。当我尝试使用 Google Kubernetes Engine 时,我收到“ HttpError:HTTP 请求失败”。

这是我使用该库的方式:

const kc = new k8s.KubeConfig();
kc.loadFromDefault();

const k8sApi = kc.makeApiClient(k8s.CoreV1Api);
Run Code Online (Sandbox Code Playgroud)


然后我使用以下方法创建一个 pod,使用 V1Pod 主体:

k8sApi.createNamespacedPod("default", pod).then(
    (response) => {
        console.log(`Created pod -> ${response}`);
    },
    (err) => {
        console.log(`Error: ${err}`);
    }
);
Run Code Online (Sandbox Code Playgroud)

Hay*_*ane 0

我不确定您是否解决了这个问题,但我通过使用 JSON.stringify(e) 关于创建函数(即 api.createNamespacedCronJob(...))生成的错误获得了更多信息。如果您查看 k8s javascript 客户端的 github 存储库,则 HttpError 对象包含响应、正文和状态代码。这对我的情况非常有帮助。由于请求所使用的服务帐户的权限,这是 403 禁止的。

Kubernetes Javascript 客户端 HttpError (生成该消息): https://github.com/kubernetes-client/javascript/blob/ab5fc88afb4a205b1686078feca7e233f610c4f6/src/gen/api/apis.ts